首页 > 解决方案 > 使用 LSTM 迭代不同的数据集,而不保留先前训练的记忆

问题描述

我对 Tensorflow 和 LSTM 比较陌生,只使用了几个月。目前,我正在研究多变量 LSTM,我想使用相同的模型配置并遍历不同的数据集。

我遇到的问题是内存以某种方式保留,这意味着下一次训练结果会受到之前训练的影响。因此,比如我循环训练模型1和模型2,分别训练模型2,那么模型2在这两个试验中的结果是不同的。以下是我的代码:

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 仍然保留了记忆,影响了后续的训练。

我可以做一些乏味的事情,比如单独运行所有模型而不是循环,但是我有 24 个模型,所以这真的很烦人..

有人遇到过同样的问题并有解决此问题的想法吗?非常感谢所有帮助。另外,这是我第一次在这里发帖,如果我的帖子没有正确遵守规则,我深表歉意,请帮助我调整帖子的格式,不要删除它:(。谢谢!

标签: loopstensorflowkerasmemorylstm

解决方案


推荐阅读