IIWAB Keras 3 only supports V3 `.keras` files and legacy H5 format fil - IIWAB

Keras 3 only supports V3 `.keras` files and legacy H5 format fil

IIWAB 26天前 ⋅ 60 阅读

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)。
  • 如果选择方法三,需注意降级可能带来的兼容性问题。

全部评论: 0

    我有话说: