使用 LSTM 进行回归 - python 和 Keras
Regression with LSTM - python and 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() 函数的方式可能有问题,但我看不出要调整什么。我对此比较陌生,所以非常感谢任何帮助。
您可能使用了非标准的预测函数。也许您正在使用 predict_classes
?
有据可查的标准是model.predict
。
我正在尝试在 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() 函数的方式可能有问题,但我看不出要调整什么。我对此比较陌生,所以非常感谢任何帮助。
您可能使用了非标准的预测函数。也许您正在使用 predict_classes
?
有据可查的标准是model.predict
。