1. 简要解释报错原因
报错原因是尝试加载的模型文件格式不被支持。Keras 3仅支持V3 .keras
文件或H5格式文件(.h5
扩展名),而当前模型文件为TensorFlow SavedModel格式,无法直接通过load_model()
加载。
2. 原因分析
- 模型文件格式问题:当前模型文件路径为
./models/Conv_LSTM_MLP_Net/models_weight_end
,其格式为TensorFlow SavedModel,而非Keras支持的V3.keras
或H5格式。 - Keras版本限制:Keras 3不再支持直接加载TensorFlow SavedModel格式的模型。
- 加载方法错误:使用
tf.keras.models.load_model()
加载非支持格式的模型会导致ValueError
。
3. 修复建议
方法一:将模型转换为H5格式
如果可以重新保存模型,建议将其转换为H5格式:
import tensorflow as tf
# 加载SavedModel格式的模型
model = tf.keras.models.load_model('./models/Conv_LSTM_MLP_Net/models_weight_end')
# 保存为H5格式
model.save('converted_model.h5')
然后在代码中加载H5格式模型:
from tensorflow.keras.models import load_model
# 加载H5格式模型
model = load_model('converted_model.h5')
方法二:使用TFSMLayer
加载SavedModel
如果无法转换模型格式,可以使用keras.layers.TFSMLayer
加载SavedModel:
from tensorflow.keras.layers.experimental import TFSMLayer
# 使用TFSMLayer加载SavedModel
model_layer = TFSMLayer('./models/Conv_LSTM_MLP_Net/models_weight_end', call_endpoint='serving_default')
# 将其封装为模型
model = tf.keras.Sequential([model_layer])
方法三:降级Keras版本
如果项目允许,可以降级到Keras 2.x版本,该版本支持直接加载TensorFlow SavedModel格式:
pip install keras==2.12.0
4. 注意事项
- 如果选择方法一,请确保有足够的磁盘空间进行模型转换。
- 如果选择方法二,需确认
call_endpoint
名称是否正确(通常为serving_default
)。 - 如果选择方法三,需注意降级可能带来的兼容性问题。
注意:本文归作者所有,未经作者允许,不得转载