首页 > 解决方案 > 循环不同的数据集并使用 LSTM 进行预测

问题描述

我一直在研究 keras,LSTM 一段时间,但仍然相当新。

我面临一个问题,每次使用 keras LSTM 进行训练和预测时,我都需要重新启动 Jupyter Notebook。

当我需要使用相同的 LSTM 模型设置循环使用不同数据集的多个预测时,这会出现问题。

另一种方法是按数据集训练和预测数据集,每次预测完成后重新启动和运行,这将是一个非常繁琐的过程。

例如:

for i in ...: # Loop for different data set

    ...

    # Create LSTM Model
    model = Sequential()
    model.add(LSTM(units=32,
                   activation='relu',
                   batch_input_shape=(1, timestep_n, feature_n),
                   return_sequences=True))
    model.add(Dense(units=1, 
                    activation='relu'))
    model.compile(loss='mean_squared_error', optimizer=adam, metrics=['accuracy'])
    ...

    # Train Model
    model.fit(x, y, epochs=100)

    ...

    # Predict
    result = model.predict(x_p)

    # End Loop for next data set

在创建每个训练模型之前,我尝试清除会话,但预测的值与我运行单个训练和预测时的值不同。

    session = tf.get_default_session()
    if session is not None:
        session.close()
    K.clear_session()
    gc.collect()

我还使用了随机种子,希望每次运行都能获得相同的值。为了一致性。

    SEED = 1
    np.random.seed(SEED)
    tf.set_random_seed(SEED)
    random.seed(SEED)

我正在考虑在每个循环中声明/创建一个“新”LSTM 模型来预测不同数据集的值,而不必手动重新启动笔记本并为每个数据集运行。

即使我del model在循环结束时执行,内存也没有被正确清除。

有人可以帮忙吗?

标签: pythonkerasjupyter-notebooklstmrecurrent-neural-network

解决方案


你得到了什么:

for i in ...: # Loop for different data set

...

model = None
# Create LSTM Model
model = Sequential()
...

推荐阅读