首页 > 解决方案 > 使用 LSTM 进行回归 - python 和 Keras

问题描述

我正在尝试在 Keras 中使用 LSTM 网络来预测未来的时间序列数据。我拥有的数据有 5 个维度,我试图使用前 3 个周期的读数来预测下一个周期的未来值。我已经对数据进行了规范化并删除了所有 NaN 等,这是我试图用来训练网络的代码:

def Network_ii(IN, OUT, TIME_PERIOD, EPOCHS, BATCH_SIZE, LTSM_SHAPE):
 
    length = len(OUT)
    train_x = IN[:int(0.9 * length)]
    validation_x = IN[int(0.9 * length):]
    train_y = OUT[:int(0.9 * length)]
    validation_y = OUT[int(0.9 * length):]

    # Define Network & callback:
    train_x = train_x.reshape(train_x.shape[0],3, 5)
    validation_x = validation_x.reshape(validation_x.shape[0],3, 5)
    

    model = Sequential()
    model.add(LSTM(units=128, return_sequences= True, input_shape=(train_x.shape[1],3)))
    model.add(LSTM(units=128))
    model.add(Dense(units=1))
    model.compile(optimizer='adam', loss='mean_squared_error')

    train_y = np.asarray(train_y)
    validation_y = np.asarray(validation_y)
    history = model.fit(train_x, train_y, batch_size=BATCH_SIZE, epochs=EPOCHS, validation_data=(validation_x, validation_y))

    # Score model
    score = model.evaluate(validation_x, validation_y, verbose=0)
    print('Test loss:', score)
    # Save model
    model.save(f"models/new_model")

我正在尝试大致遵循此处概述的步骤-https ://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/

但是,无论我在更改用于训练网络的维度数量或时间段长度方面进行了哪些调整,我都无法获得模型的输出来给出既不是 1 也不是 0 的预测。这是即使目标数据,在数组“OUT”中也是由在 [0,1] 上连续的数据组成的。

我认为我设置 .Sequential() 函数的方式可能有问题,但我看不出要调整什么。我对此相对较新,因此将不胜感激任何帮助。

标签: pythonkerasrecurrent-neural-network

解决方案


您可能正在使用非标准的预测功能。也许你正在使用predict_classes

有据可查且标准为model.predict.


推荐阅读