CSVLogger和model.eevaluate()之间有什么区别



我一直在使用Keras/TF的CSVLogger来保存训练和验证的准确性。然后我绘制了这些数据,以检查训练和验证的准确性或损失。

昨天,我读了这个链接。

在这里,他们使用model.evaluate()来绘制精度度量。

这两种方法有什么区别?

以下是两者之间的主要区别:

model.eevaluate((给出了与训练过程中不同的训练数据损失,而CSVLogger在过程中的每个历元之后跟踪验证集上的度量。

记录并绘制结果

  • CSVLogger将训练的结果保存在CSV文件
  • fit的输出,通常称为history,将在变量中准备好相同的结果,而不需要CSV文件

它们的数据应该完全相同。

Evaluate

evaluate方法是而不是日志。这是一种方法,您可以随时调用,并将为每个损失输出单个值以及在compile中为";当前";模型

这在训练期间不会在任何地方注册,并且通常不应在训练期间调用,除非您创建一个自定义训练循环并在每个epoch内手动调用该循环中的evaluate(这对于标准使用来说是不必要且不方便的(。

您可以将evaluate所需的任何数据一起使用,包括既不在训练数据中也不在验证数据中的数据。

您共享的链接

请注意,他们绘制的是history,而historyfit的输出。与evaluate无关。

plot.plot(history.history['acc'])
plot.plot(history.history['val_acc'])

请参阅链接的上一页:

history = model.fit(...)

链接并没有完全显示";其中";他们称之为evaluate,他们可能正在这样做"训练后仅一次";,只是为了查看模型的最终结果(而不是训练日志(

最新更新