在Streamlit Cloud部署LSTM模型应用时遇参数错误求助
问题原因
这个错误的核心是本地和Streamlit Cloud的TensorFlow/Keras版本不兼容。time_major是LSTM层的参数之一,不同版本的框架对该参数的支持不一样——你本地用的版本能识别这个参数,但云端环境的版本存在差异(通常是版本过旧),认不出它,所以抛出了这个错误。
解决方法
- 锁定依赖版本
在项目根目录新建requirements.txt文件,把本地环境用的TensorFlow、Streamlit版本明确写进去,强制云端安装和本地一致的版本。比如本地用的是TensorFlow 2.10.0、Streamlit 1.28.0,文件内容就写:
tensorflow==2.10.0 streamlit==1.28.0
(项目用到的其他依赖也可以一并写上,避免遗漏)
- 重新适配模型(如果版本锁定后仍有问题)
要是锁定版本后还是报错,可以在本地用和云端一致的框架版本重新导出模型:
- 本地创建虚拟环境,安装和
requirements.txt里一致的TensorFlow版本 - 加载原模型,检查LSTM层的参数,按照目标版本的要求调整(比如移除
time_major参数),然后重新保存成.h5文件 - 把新模型替换掉旧的,再重新部署到Streamlit Cloud
- 检查模型加载代码
确保加载模型的代码没有额外传入不兼容的参数,正确的加载方式应该是:
from tensorflow.keras.models import load_model model = load_model('你的模型文件名.h5')
别在load_model函数里加和LSTM层相关的自定义参数。
内容的提问来源于stack exchange,提问作者Anushk Jain
相关产品推荐
相关产品推荐

