一、loss、acc提取
有时候我们需要查看每个batch训练时候的损失loss与准确率acc,这样可以帮助我们挑选合适的epoch以及查看模型是否收敛。
Model.fit()在调用时会返回一个History类,这个类的一个属性Historty.history是一个字典,里面就包含了每一个batch的测试集与验证集的loss、acc。
# 模型训练 history = model.fit(train_images, train_labels, batch_size=50, epochs=5, validation_split=0.1, verbose=1) history.history.keys() # 查看字典的键 loss = history.history['loss'] # 测试集损失 acc = history.history['acc'] # 测试集准确率 val_loss = history.history['val_loss'] # 验证集损失 val_acc = history.history['val_acc'] # 验证集准确率
二、使用matplotlib可视化
这里可视化用到的包是matplotlib,暂不提供在tensorboard上的可视化,详细使用如下。
import tensorflow as tf import matplotlib.pyplot as plt # 读取数据集 (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.fashion_mnist.load_data() # 数据集归一化 train_images = train_images / 255 train_labels = train_labels / 255 # 进行数据的归一化,加快计算的进程 # 创建模型结构 net_input = tf.keras.Input(shape=(28, 28)) fl = tf.keras.layers.Flatten()(net_input) # 调用input l1 = tf.keras.layers.Dense(32, activation="relu")(fl) l2 = tf.keras.layers.Dropout(0.5)(l1) net_output = tf.keras.layers.Dense(10, activation="softmax")(l2) # 创建模型类 model = tf.keras.Model(inputs=net_input, outputs=net_output) # 查看模型的结构 model.summary() # 模型编译 model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss="sparse_categorical_crossentropy", metrics=['acc']) # 模型训练 history = model.fit(train_images, train_labels, batch_size=50, epochs=5, validation_split=0.1, verbose=1) history.history.keys() # 查看字典的键 loss = history.history['loss'] # 测试集损失 acc = history.history['acc'] # 测试集准确率 val_loss = history.history['val_loss'] # 验证集损失 val_acc = history.history['val_acc'] # 验证集准确率 # 可视化,定义2*2的画布 plt.figure() plt.subplot(221) plt.plot(loss) plt.title('loss') plt.subplot(222) plt.plot(acc) plt.title('acc') plt.subplot(223) plt.plot(val_loss) plt.title('val_loss') plt.subplot(224) plt.plot(val_acc) plt.title('val_acc') plt.show()
输出结果: