Loops 使用LSTM迭代不同的数据集,而不保留以前训练的记忆
我对Tensorflow和LSTM比较陌生,只工作了几个月。目前,我正在研究多元LSTM,我希望在不同的数据集上使用相同的模型配置和循环 我遇到的问题是,记忆在某种程度上被保留了下来,这意味着下一次训练的结果将受到上一次训练的影响。因此,例如,如果我在一个环路中训练模型1和2,并且分别训练模型2,那么模型2在这两个试验中的结果是不同的。以下是我的代码:Loops 使用LSTM迭代不同的数据集,而不保留以前训练的记忆,loops,tensorflow,keras,memory,lstm,Loops,Tensorflow,Keras,Memory,Lstm,我对Tensorflow和LSTM比较陌生,只工作了几个月。目前,我正在研究多元LSTM,我希望在不同的数据集上使用相同的模型配置和循环 我遇到的问题是,记忆在某种程度上被保留了下来,这意味着下一次训练的结果将受到上一次训练的影响。因此,例如,如果我在一个环路中训练模型1和2,并且分别训练模型2,那么模型2在这两个试验中的结果是不同的。以下是我的代码: seed(1) tf.random.set_seed(2) #model configuration epochs = 20 batch_si
seed(1)
tf.random.set_seed(2)
#model configuration
epochs = 20
batch_size=100
no_models=24
for i in range(0,no_models):
#Select X train and Y train from list
#Select X test and Y test from list
#model
model = Sequential()
model.add(LSTM(200, activation="sigmoid",#recurrent_activation="sigmoid",
input_shape=(X_train.shape[1], X_train.shape[2]),
return_sequences=False,stateful=False,return_state=False))
model.add(Dense(1,activation="sigmoid"))
# compile model
model.compile(optimizer='adam', loss='mse', metrics=rmse)
for trn, val in kfold.split(X_train, Y_train):
# fit model
history = model.fit(X_train[trn], Y_train[trn], epochs=epochs,
batch_size=batch_size, verbose=1)
#make prediction
model.fit(X_train,Y_train)
Y_pred = model.predict(X_test)
我尝试了一些方法来解决这个问题:
- 我已经使用随机种子为每次运行获得相同的结果
- 我确实尝试过将LSTM模型创建为函数,使用该函数中的所有
,model.add()
,model.compile()
,model.fit()
和model.evaluate()
,最后返回Y_predmodel.fit()
- 使用keras清除会话。清除会话()
- 在循环末尾添加
model=None
- 使用
模型清除LSTM状态。在循环结束时重置状态()
- 将
放在循环的末尾del model
是否有人遇到过同样的问题,并有任何想法来解决这个问题?非常感谢您的帮助。此外,这是我第一次在这里发帖,所以如果我的帖子没有正确遵守规则,我表示歉意,请帮助我修改帖子的格式,不要删除它:(.谢谢!您需要将模型放在第二个for循环中,因此它只为每个折叠定义。我认为这将需要更多的计算时间,因为两个循环中的模型配置相同。我编辑了代码,在交叉验证之后,我用所有数据再次训练了模型,但我没有意识到我最初的帖子是missi没关系,在模型上调用fit并不能训练scratch,你需要为此创建一个新模型。