use*_*789 5 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)
Run Code Online (Sandbox Code Playgroud)
第二种方式
model.save_weights("model_weights.h5")
Run Code Online (Sandbox Code Playgroud)
两种方式有什么区别?加载weights.hdf5和加载之间的预测性能model_weights.h5有何不同?
zim*_*rol 11
不,在性能方面没有区别。这只是如何保存模型以及何时保存模型的两种不同方式。model.save_weights每当需要保存模型时(例如在训练或训练的一部分完成之后),使用require都要特别调用此函数。ModelCheckpoint如果您仍在开发模型,则使用起来会更加方便。使用这种方法,keras可以在每个训练时期之后保存模型的检查点,以便您可以还原不同的模型;或者您可以进行设置,save_best_only=True以便keras 仅在性能提高后才覆盖最新的检查点,从而以性能最佳的模型结束。
概括起来:这只是做两种不同事情的两种不同方式。这取决于您的用例和需求,什么才是最好的。
从根本上解释了这里的参考.wolfram.com/language/ref /format/HDF5.html
HDF是分层数据格式的缩写。HDF5是 HDF 版本 5。
Import["file.h5"]
Run Code Online (Sandbox Code Playgroud)
导入 HDF5 文件,返回文件中存储的数据集的名称。
在 Keras 文档中;正如您在这里看到的keras.io/api/models/model_ saving_apis/
model.save('my_model.h5') # creates a HDF5 file 'my_model.h5'
Run Code Online (Sandbox Code Playgroud)
在 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')
Run Code Online (Sandbox Code Playgroud)
从根本上讲,它们是同一件事。他们无法创造任何差异。