首页 > 解决方案 > model.save() 是保存最后一个 epoch 还是最好 epoch 的模型?

问题描述

这个单行用来保存keras深度学习神经网络模型。

model.save('my_model.h5')

model.save()保存最后一个时期的模型还是最好的时期?有时,最后一个 epoch 并没有提供性能改进。

标签: machine-learningneural-networkkerasdeep-learning

解决方案


它将模型保存在其确切的当前状态。如果此语句在Model#fit方法完成之后,则它表示最后一个 epoch。

对于最佳时期(假设最佳 == 最小损失或更高准确度),您可以为此使用ModelCheckpoint

epochs = 100
# other parameters...

model.fit(x, y,
          epochs=epochs,
          validation_data=valid,
          verbose=2,
          callbacks=[
              TerminateOnNaN(),
              TensorBoard('./logs'),
              ModelCheckpoint('best.h5',
                              save_best_only=True),
              ...
          ])
# the model is holding the weights optimized for 100 epochs.
model.load_weights('best.h5')  # load weights that generated the min val loss.

推荐阅读