这两种节省keras机器学习模型权重的方法有什么区别?

时间:2018-08-20 01:09:11

标签: python machine-learning neural-network 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.hdf5model_weights.h5之间的预测性能有何不同?

2 个答案:

答案 0 :(得分:5)

不,在性能方面没有区别。这只是如何保存模型以及何时保存模型的两种不同方式。使用model.save_weights时,无论何时要保存模型,都需要特别调用此函数。训练或部分训练完成后。如果您仍在开发模型,则使用ModelCheckpoint更为方便。通过这种方式,keras可以在每个训练时期之后保存模型的检查点,以便您可以还原不同的模型;或者您可以设置save_best_only=True以便keras仅在性能提高后才覆盖最新的检查点,从而以性能最佳的模型结束。

总结一下:这只是做两种不同事情的两种不同方式。这取决于您的用例和需求,什么才是最好的。

答案 1 :(得分:1)

HDF5 (.h5, .hdf5)

正如这里的基本解释reference.wolfram.com/language/ref/format/HDF5.html

<块引用>

HDF 是分层数据格式的首字母缩写词。 HDF5 是 HDF 版本 5。

Import["file.h5"] 
<块引用>

导入一个 HDF5 文件,返回 存储在文件中的数据集的名称。

在 Keras 文档中;如您所见keras.io/api/models/model_saving_apis/

model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'

在 Tensorflow 文档中;如您所见tensorflow.org/tutorials/keras/save_and_load

# Save the entire model to a HDF5 file.
# The '.h5' extension indicates that the model should be saved to HDF5.
model.save('my_model.h5')

从根本上讲,它们是一回事。他们不能创造任何差异。