我正在用一个Jupyter笔记本工作。我使用keras创建并训练了一个非常简单的CNN。它可以编译,拟合并预测良好。我将其保存为:
model.save("mymodel.hd5")
模型是一个keras.models.Sequential。
然后我再读一次:
reload_keras_model = keras.models.load_model("mymodel.hd5")
这也很好。但是,如果我尝试通过以下方式使用tensorflow来读取模型:
from tensorflow.keras.models import load_model
reload_tf_mmodel = load_model("mymodel.hd5")
失败的原因:
ValueError: Unknown layer:layers
我在github上阅读的大多数线程都说“更新您的模型”或有关自定义对象的注释(我没有使用任何线程)。我的目标平台是rpi zero,我已经能够安装tf但无法安装keras,这就是为什么我要通过tf加载的原因。为什么keras和tf.keras会以不同的方式处理此模型,我需要更新/更改以使用tf.keras读取它吗?
答案 0 :(得分:0)
虽然keras(可以)将TF用作后端,但是它不能保证所保存的模型也可以在TF中读取。
请注意,您可以将keras与theano和tf一起使用,因此reload_keras_model = keras.models.load_model("mymodel.hd5")
在两个后端上都可以很好地工作,因为保存/加载是在“ keras”部分完成的,而不是使用后端。
您可以使用此工具:keras_to_tensorflow
或类似的东西。