tf.keras模型保存差异

时间:2019-08-20 13:49:08

标签: tensorflow keras tf.keras

我注意到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可能会在后台执行某些操作(压缩?)。你有什么主意吗?

1 个答案:

答案 0 :(得分:0)

如果您的保存格式为'tf,则model.savetf.keras.models.save_model的GitHub源代码最终会导致在tensorflow.python.keras.saving.saved_model包中出现的save内部方法。 ”,如果您的保存格式为“ h5”,则会导致内部方法save_model_to_hdf5。您的方法可能做错了。