# 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()
浙公网安备 33010602011771号