【发布时间】:2019-06-18 10:21:02
【问题描述】:
我加载了一个已保存的 h5 模型并希望将模型保存为 pb。
模型在训练期间使用tf.keras.callbacks.ModelCheckpoint 回调函数保存。
TF 版本:2.0.0a
编辑:同样的问题也与 2.0.0-beta1
我保存 pb 的步骤:
- 我先设置
K.set_learning_phase(0) - 然后我用
tf.keras.models.load_model加载模型 - 然后,我定义了
freeze_session()函数。 - (可选我编译模型)
- 然后将
freeze_session()函数与tf.keras.backend.get_session一起使用
错误我得到,无论是否编译:
AttributeError: 模块 'tensorflow.python.keras.api._v2.keras.backend' 没有属性“get_session”
我的问题:
TF2 不再有
get_session了吗? (我知道tf.contrib.saved_model.save_keras_model已经不存在了,我也尝试了tf.saved_model.save,但没有成功)-
或者
get_session仅在我实际训练模型并且仅加载 h5 不起作用时才起作用 编辑:同样对于新训练的会话,没有可用的 get_session。- 如果是这样,我将如何将未经培训的 h5 转换为 pb?有好的教程吗?
感谢您的帮助
更新:
自从 TF2.x 正式发布以来,图形/会话概念发生了变化。应该使用savedmodel api。
您可以将tf.compat.v1.disable_eager_execution() 与TF2.x 一起使用,它将生成一个pb 文件。但是,我不确定它是哪种 pb 文件类型,因为保存的模型组合从 TF1 更改为 TF2。我会继续挖掘。
【问题讨论】:
标签: tensorflow keras protocol-buffers tensorflow2.0 keras-2