低调小萱

导航

 
# 1)import【引入相关模块】
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Model
from sklearn import datasets
import numpy as np
import matplotlib.pyplot as plt

# 2)train,test 【告知喂入网络的训练集测试集以及相应的标签】
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)


# 3) class MyModel()
class IrisModel(Model):
    def __init__(self):
        super(IrisModel, self).__init__()
        self.d1 = Dense(3, activation='sigmoid', kernel_regularizer=tf.keras.regularizers.l2())

    def call(self, x):
        y = self.d1(x)
        return y


model = IrisModel()

# 4)model.compile 【告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标】
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

# 5)model.fit 【在fit()中执行训练过程,告知训练集合测试集的输入特征和标签,告知batch大小,告知要迭代多少次数据集】
history = model.fit(x_train, y_train, verbose=0, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

# 6)model.summary 【打印网络结构和参数统计】
model.summary()

# 画训练集和测试集的loss曲线
train_loss = np.array(history.history['loss'])
sparse_categorical_accuracy = np.array(history.history['sparse_categorical_accuracy'])
epoch = np.array(history.epoch)

train_line, = plt.plot(epoch, train_loss)
sparse_categorical_accuracy_line, = plt.plot(epoch, sparse_categorical_accuracy)
plt.legend(handles=[train_line, sparse_categorical_accuracy_line], labels=['train_loss', 'sparse_categorical_accuracy'])
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

 

posted on 2021-06-24 16:56  低调小萱  阅读(205)  评论(0)    收藏  举报