1. 使用TensorBoard
2. 使用History类
TensorBoard的Scalars可以可视化这些指标
记录训练中的指标,需要执行以下操作:
回调函数:
tf.keras.callbacks.TensorBoard(
log_dir='logs', histogram_freq=0, write_graph=True, write_images=False,
update_freq='epoch', profile_batch=2, embeddings_freq=0,
embeddings_metadata=None, **kwargs
)
参数:
定义好回调函数后,在fit()函数中加入参数
如下:
logdir = "logs/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)
.....(省略掉的代码)
history = model.fit(train_data,epochs=5,validation_data=test_data,validation_freq=1,
callbacks=[tensorboard_callback]
)
然后在终端,使用 tensorboard --logdir log/
,就会出现下面的信息:
Serving TensorBoard on localhost; to expose to the network, use a proxy or pass --bind_all
TensorBoard 2.1.0 at http://localhost:6007/ (Press CTRL+C to quit)
这种方式比较简单,
history = model.fit(train_data,epochs=5,validation_data=test_data,validation_freq=1,
callbacks=[tensorboard_callback]
fit() 会返回一个History的类,它的History.history属性记录了训练时期(每个epoch),训练损失和准确率以及验证损失和验证准确率。
如下:
model.compile(optimizer=keras.optimizers.Adam(lr=0.01),
loss = tf.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy']
)
history = model.fit(train_data,epochs=5,validation_data=test_data,validation_freq=1,
# callbacks=[tensorboard_callback]
)
plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['loss'], label='loss')
plt.plot(history.history['val_loss'], label = 'val_loss')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
# plt.ylim([0.5, 1])
plt.legend(loc='lower right')
plt.show()