使用Sequential定义Keras模型测试时出现TypeError错误求助
解决方法
1. 统一Keras导入路径
训练和加载模型时必须用完全一致的导入方式,别混用原生Keras和TensorFlow集成的Keras:
如果训练时用的是原生Keras:
from keras.models import Sequential, model_from_json加载时也得用这组导入,不能换成
tf.keras。更推荐用TensorFlow自带的Keras,全程都这么写:
from tensorflow.keras.models import Sequential, model_from_json要是你环境里同时装了原生Keras和TensorFlow,先把原生Keras卸了:
pip uninstall keras -y
2. 确保保存和加载代码完全匹配
保存模型(对应原生Keras):
# 存模型结构为json model_json = model.to_json() with open("model.json", "w") as json_file: json_file.write(model_json) # 存权重为h5 model.save_weights("model.h5")
加载模型(必须和保存时的导入一致):
# 读模型结构 json_file = open('model.json', 'r') loaded_model_json = json_file.read() json_file.close() loaded_model = model_from_json(loaded_model_json) # 加载权重 loaded_model.load_weights("model.h5")
3. 检查环境里的Keras版本冲突
跑下面的代码看看你当前用的Keras路径:
import keras print(keras.__file__) import tensorflow.keras print(tensorflow.keras.__file__)
要是两个路径不一样,说明同时存在原生Keras和tf.keras,直接卸载原生Keras,统一用tf.keras就行。
4. 换个保存方式试试
要是上面的方法都不行,别分开存json和权重了,直接存整个模型:
# 保存完整模型 model.save("full_model.h5") # 加载完整模型 from keras.models import load_model # 或者用from tensorflow.keras.models import load_model loaded_model = load_model("full_model.h5")
这种方式不容易出路径匹配的问题。
内容的提问来源于stack exchange,提问作者Jayaraj David
相关产品推荐
相关产品推荐

