未将model.fit赋值给变量时能否绘制训练准确率、损失等曲线?
问题解答
默认情况下,如果已经完成model.fit()训练且没有将返回值赋值给变量,也没有预先配置指标记录工具,无法回溯获取历史训练指标,也就不能绘制accuracy、loss等指标的变化曲线。
两种规避/补救方案
- 方案1:训练前保存fit方法的返回History对象(最常用)
model.fit()执行后默认会返回一个History实例,对象的history属性是字典,存储了每一轮训练的所有指标值,示例用法如下:
# 赋值保存返回值 history = model.fit(x_train, y_train, epochs=10, validation_split=0.2) # 绘制训练/验证准确率曲线示例 import matplotlib.pyplot as plt plt.plot(history.history['accuracy'], label='Training Accuracy') plt.plot(history.history['val_accuracy'], label='Validation Accuracy') plt.legend() plt.show()
- 方案2:预先配置回调持久化记录指标(无需关心返回值)
如果不想每次都手动保存返回值,可以提前配置Keras官方的CSVLogger回调,训练过程会自动把每轮的指标写入本地日志文件,后续直接读取文件即可绘图,示例用法如下:
from tensorflow.keras.callbacks import CSVLogger # 配置日志回调,指标将自动写入training.csv csv_logger = CSVLogger('training.csv', append=False) # 训练时传入回调,无需赋值返回值也能留存指标 model.fit(x_train, y_train, epochs=10, validation_split=0.2, callbacks=[csv_logger])
如果训练已经完成且没有做上述任何准备,只能重新运行训练流程留存指标后再绘图。
内容的提问来源于stack exchange,提问作者geghampetrosyan
相关产品推荐
相关产品推荐

