在 Streamlit 上导入训练好的 LSTM 模型

问题描述 投票:0回答:1

我已经在 Colab 上训练了 LSTM 模型并保存了模型。以下是我的模型的代码:

from keras.layers import Dense, Dropout, LSTM
from keras.models import Sequential

# Build LSTM model
model = Sequential()  # Initialize the Sequential model
model.add(LSTM(units=50, activation='relu', return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(Dropout(0.2))



model.add(LSTM(units = 60, activation = 'relu', return_sequences = 'True'))
model.add(Dropout(0.3))

model.add(LSTM(units = 80, activation = 'relu', return_sequences = 'True'))
model.add(Dropout(0.4))

model.add(LSTM(units = 120, activation = 'relu'))
model.add(Dropout(0.5))


model.add(Dense(units = 1))

# Fit the model on traing data
model.compile(optimizer='adam', loss = 'mean_squared_error')
model.fit(x_train, y_train, epochs = 100)

# Save the model
model.save('LSTM_model.keras')

然后,我使用以下代码在 Streamlit 上加载模型:

from tensorflow.keras.models import load_model

# Load the model
model = load_model('LSTM_model.keras')

经过训练的模型 LSTM_model.keras 和名为 main.py 的 Streamlit 应用程序都保存在同一目录/路径中。我通过从保存两个文件的同一目录执行以下命令来运行 straemlit 应用程序。

streamlit run main.py

但是当我运行 Streamlit 应用程序时,我收到错误:

ValueError: Could not interpret initializer identifier: {‘module’: ‘keras.initializers’, ‘class_name’: ‘Orthogonal’, ‘config’: {‘gain’: 1.0, ‘seed’: None}, ‘registered_name’: None, ‘shared_object_id’: 140299714528304}
Traceback:
File “D:\Program_Files\Python312\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py”, line 542, in run_script
exec(code, module.dict)
File “C:\Users\sanni\Desktop\Stock\main.py”, line 72, in
model = load_model(‘LSTM_model.keras’)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\saving\saving_api.py”, line 176, in load_model
return saving_lib.load_model(
^^^^^^^^^^^^^^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\saving\saving_lib.py”, line 155, in load_model
model = deserialize_keras_object(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\saving\serialization_lib.py”, line 711, in deserialize_keras_object
instance = cls.from_config(inner_config)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\models\sequential.py”, line 331, in from_config
layer = serialization_lib.deserialize_keras_object(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\saving\serialization_lib.py”, line 711, in deserialize_keras_object
instance = cls.from_config(inner_config)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\layers\rnn\lstm.py”, line 646, in from_config
return cls(**config)
^^^^^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\layers\rnn\lstm.py”, line 459, in init
cell = LSTMCell(
^^^^^^^^^
File “D:\Program_Files\Python312\Lib\site-packages\keras\src\layers\rnn\lstm.py”, line 122, in init
self.recurrent_initializer = initializers.get(recurrent_initializer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Program_Files\Python312\Lib\site-packages\keras\src\initializers_init.py", line 117, in get
raise ValueError(

当我运行 main.py 时,模型应该成功加载,以便我可以使用该模型进行预测

python lstm streamlit
1个回答
0
投票

问题已解决。 Google Colab 使用旧版本的 Keras 和 Tensorflow,而我的 PC 上有最新版本的 Keras 和 Tensorflow。我在本地主机的 Jupyter Notebook 中构建并保存了模型,由于我使用的是本地主机,因此它使用安装在我的 PC 中的最新版本的 Keras 和 Tensorflow 来工作。由于版本不匹配而发生错误。

© www.soinside.com 2019 - 2024. All rights reserved.