我注意到tf.keras
中可用的两个保存功能之间的差异,两者似乎都在做相同的事情,我想知道实际的区别是什么。
当我使用以下方法保存模型,然后通过以下方法评估其大小时:
model.save(path)
print("Size of the model: %.2f Mb" % (os.path.getsize(path) / float(2**20)))
我有:
模型的大小:172.13 Mb
但是如果现在我尝试使用以下功能:
tf.keras.models.save_model(model, path)
我有:
模型的大小:57.39 Mb
通过查看Keras和tf.keras
的文档,我发现:
tf.keras.models.save_model
:保存的模型包含:-模型的配置(拓扑)-模型的权重-模型的优化器状态(如果有)
并且:
model.save()
:保存Keras模型,其中将包含:模型的架构,模型的权重,训练配置(损失,优化器),优化器的状态。
两者似乎都可以达到相同的目的,所以我猜测tf.keras.save_model
可能会在后台执行某些操作(压缩?)。你有什么主意吗?
答案 0 :(得分:0)
如果您的保存格式为'tf,则model.save和tf.keras.models.save_model的GitHub源代码最终会导致在tensorflow.python.keras.saving.saved_model包中出现的save内部方法。 ”,如果您的保存格式为“ h5”,则会导致内部方法save_model_to_hdf5。您的方法可能做错了。