这行代码用于保存Keras深度学习神经网络模型。
model.save('my_model.h5')
model.save()
保存的是最后一个epoch的模型还是最佳epoch的模型?有时候,最后一个epoch并不会带来性能的提升。
回答:
它保存模型的当前状态。如果这条语句是在Model#fit
方法完成之后执行的,那么它代表的是最后一个epoch。
对于最佳epoch(假设最佳意味着最小的损失或更高的准确性),你可以使用ModelCheckpoint来实现这一点:
epochs = 100# 其他参数...model.fit(x, y, epochs=epochs, validation_data=valid, verbose=2, callbacks=[ TerminateOnNaN(), TensorBoard('./logs'), ModelCheckpoint('best.h5', save_best_only=True), ... ])# 模型保存了优化100个epoch后的权重。model.load_weights('best.h5') # 加载产生最小验证损失的权重。