为什么每次运行后我得到不同的预测结果?

数据挖掘 lstm 训练 预言 验证
2022-02-25 01:04:00

我有一个简单的 lstm 模型

model =Sequential()
model.add(LSTM(100, activation='relu', input_shape=(n_input,n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.summary()

我在相同的数据上训练和测试,但每次我得到不同的预测。为什么?

如果模型参数和训练和测试相同,为什么每次运行的预测都会发生变化?

如果结果不可重现,那么训练和测试 lstm 模型的意义何在?

rmse 值几乎相似,但每次运行的预测值都相差甚远。

1个回答

您是否在代码中的任何位置指定随机种子?如果您不这样做,这可能就是为什么您的 RMSE 值在每次运行训练/测试数据集时都不同的原因。

您可以使用该set_random_seed()函数来设置随机种子并使您的训练更具确定性。您也可以使用enable_op_determinism()它来使其更具确定性,但训练速度会因此受到影响。

import tensorflow as tf

tf.keras.utils.set_random_seed(1)
tf.config.experimental.enable_op_determinism()

utils.set_random_seed()将自动设置 和 的种子,random.seed()numpy.random.seed()您在链接文档中所见,因此您无需导入和设置它们。

第二点,您是在训练之前拆分训练/测试集还是使用 Tensorflow/Keras 的内置函数来执行此操作?如果是这样,数据拆分也将根据随机种子而变化。