python - 从不同版本的 tf.keras 加载保存的模型
问题描述
我在 google colab 中使用 TensorFlow 和 Keras 创建了一个图像分类模型。它分别与 GPU 版本 1.15 和 2.2.4 一起保存在那里。现在我想用 CPU 和版本 1.10 和 2.2.2 将它们加载到我的远程机器中,我无法做到这一点并出现错误。这是我第一次使用 CNN 以及 tf 和 keras,所以我无法弄清楚确切的原因是什么以及如何解决这个问题。我在下面提到了代码和错误:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import load_model
from tensorflow.keras.models import model_from_json
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
错误:ValueError:('无法识别的关键字参数:',dict_keys(['ragged']))
解决方案
Tensorflow 1.15 包含诸如不规则张量支持之类的重大更改,因此它不支持向后兼容性(Tf 1.10)。这就是问题所在。请尝试使用 Tensorflow 1.15 加载它,它应该可以工作。
You can load tf1.15+ model using tf1.15-2.1. Then save only weights to open in tf1.10
___________________________________________________________________
# In tensorflow 1.15-2.1
# Load model
model = load_model("my_model.h5")
# Save weights and architecture
model.save_weights("weights_only.h5")
# Save model config
json_config = model.to_json()
with open('model_config.json', 'w') as json_file:
json_file.write(json_config)
___________________________________________________________________
# In tensorflow 1.10
# Reload the model from the 2 files we saved
with open('model_config.json') as json_file:
json_config = json_file.read()
new_model = tf.keras.models.model_from_json(json_config)
# Load weights
new_model.load_weights('weights_only.h5')
您可以参考链接以更好地理解此LINK
推荐阅读
- android - 用户位置未显示在按钮单击上
- shell-namespace-extension - 如何以编程方式在导航窗格 (Windows) 或 Finder (Mac OS) 中创建 Dropbox 或 OneDrive 等虚拟文件夹?
- c# - EFCore 批量插入和内存中的 SQLite:没有这样的表:INFORMATION_SCHEMA.COLUMNS"
- docker - 无法在 AWS Linux AMI 上安装 docker
- listview - 对话框中的列表视图,适合文本
- python - 回复评论的 Reddit Bot
- apache-kafka - 日志保留实现消息 TTL
- html - 输入类型单选垂直对齐
- xml - XML 解析错误 - 需要开始标记,未找到“<”
- python - 在 Jupyter Notebook(Python)的两个轴上是否有图表可以绘制非数字数据(分类数据)?