我一直在使用Keras/TF的CSVLogger
来保存训练和验证的准确性。然后我绘制了这些数据,以检查训练和验证的准确性或损失。
昨天,我读了这个链接。
在这里,他们使用model.evaluate()
来绘制精度度量。
这两种方法有什么区别?
以下是两者之间的主要区别:
model.eevaluate((给出了与训练过程中不同的训练数据损失,而CSVLogger在过程中的每个历元之后跟踪验证集上的度量。
记录并绘制结果
CSVLogger
将训练的结果保存在CSV文件中fit
的输出,通常称为history
,将在变量中准备好相同的结果,而不需要CSV文件
它们的数据应该完全相同。
Evaluate
evaluate
方法是而不是日志。这是一种方法,您可以随时调用,并将为每个损失输出单个值以及在compile
中为";当前";模型
这在训练期间不会在任何地方注册,并且通常不应在训练期间调用,除非您创建一个自定义训练循环并在每个epoch内手动调用该循环中的evaluate
(这对于标准使用来说是不必要且不方便的(。
您可以将evaluate
与所需的任何数据一起使用,包括既不在训练数据中也不在验证数据中的数据。
您共享的链接
请注意,他们绘制的是history
,而history
是fit
的输出。与evaluate
无关。
plot.plot(history.history['acc'])
plot.plot(history.history['val_acc'])
请参阅链接的上一页:
history = model.fit(...)
链接并没有完全显示";其中";他们称之为evaluate,他们可能正在这样做"训练后仅一次";,只是为了查看模型的最终结果(而不是训练日志(