GCP部署Flask机器学习应用tf.keras.load_model加载含MLCLSTM模型报错求助
问题排查与解决方案
核心原因是部署环境的TensorFlow依赖版本与本地开发环境不一致,且缺失自定义Op对应的依赖库,导致模型加载时无法识别MLCLSTM操作。以下是分步修复方案:
- 锁定依赖版本对齐本地环境
你的requirements.txt中tensorflow、numpy、h5py均未指定版本,GCP部署时会默认拉取最新版本,与你本地使用的TensorFlow 2.6.0不兼容。将对应依赖修改为和本地一致的版本:
同时删除文件中重复声明的tensorflow==2.6.0 numpy==1.19.3 h5py==3.1.0numpy条目,避免版本冲突。 - 补充自定义Op依赖并提前注册
MLCLSTM属于TensorFlow Addons库提供的RNN操作,原tf.contrib中的相关操作在TensorFlow 2.x版本后已迁移到该独立库,你需要在requirements.txt中添加适配TF 2.6.0的版本:
然后在调用tensorflow-addons==0.14.0tf.keras.load_model的代码前,先导入TensorFlow Addons完成Op注册:import tensorflow_addons as tfa - 显式指定自定义对象加载模型
若注册后仍报错,加载模型时显式传入自定义层的映射关系:model = tf.keras.load_model( "你的模型文件路径", custom_objects={"MLCLSTM": tfa.rnn.MLCLSTM} ) - 验证部署运行时配置
确认GCP部署的Python运行时版本为3.7~3.9(适配TensorFlow 2.6.0的Python版本范围),避免因运行时版本过高导致依赖安装失败。
内容的提问来源于stack exchange,提问作者Robo Wolf
相关产品推荐
相关产品推荐

