python - 这两种保存keras机器学习模型权重的方式有什么区别?
问题描述
我看到了两种节省 keras 模型权重的方法。
第一种方式;
checkpointer = ModelCheckpoint(filepath="weights.hdf5", verbose=1, save_best_only=True)
model.fit(x_train, y_train,
nb_epoch=number_of_epoch,
batch_size=128,
verbose=1,
validation_data=(x_test, y_test),
callbacks=[reduce_lr, checkpointer],
shuffle=True)
第二种方式;
model.save_weights("model_weights.h5")
这两种方式有什么区别?weights.hdf5
加载和预测性能有什么区别model_weights.h5
?
解决方案
不,在性能方面没有区别。这些只是保存模型的两种不同方式,尤其是何时保存模型。model.save_weights
每当您想保存模型时,例如在训练或部分训练完成后,使用需要特别调用此函数。如果您仍在开发模型,使用ModelCheckpoint
会更加方便。使用这种方式,keras
可以在每个训练 epoch 后保存一个模型的检查点,以便您可以恢复不同的模型;或者您可以设置仅在性能提高时才覆盖最新的检查点,save_best_only=True
以便keras
您以性能最佳的模型结束。
总结一下:这只是做两件不同事情的两种不同方式。这取决于您的用例和需求,什么是最好的。