CSVLogger 和 model.evaluate() 有什么区别?

What is the difference between CSVLogger and model.evaluate()?

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

昨天,我读了this link

在这里,他们使用 model.evaluate() 绘制准确度指标。

这两种方法有什么区别?

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

model.evaluate() 给出了与训练过程中不同的训练数据损失,而 CSVLogger 在过程中的每个时期后跟踪验证集上的指标。

记录并绘制结果

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

他们的数据应该是完全一样的

评估

evaluate 方法不是日志。这是一种您可以随时调用 的方法,并且将为 compile 中的每个损失和指标输出一个 单个值 对于“当前”模型。

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

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

您分享的link

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

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

见上页link:

history = model.fit(...)

link 没有准确显示他们调用评估的“位置”,他们可能“只在训练后执行一次”,只是为了查看模型的最终结果(不是日志培训)