为什么LSTM预测形状不符合预期?

问题描述 投票:0回答:1

我有一个带有时间戳和一个值的时间序列数据集(总共只有2列),并训练LSTM预测每个小时的值。

所以我准备模型的数据集如下:

将值的最后5个先前值作为X,将小时的观测值作为y。然后我将火车分开并测试每个X和y。

因此,使用最小-最大缩放器对其进行缩放后,我的火车和数据集具有以下形状。

print(train_X.shape,train_y.shape,test_X.shape,test_y.shape)
(16195, 5) (16195,) (8716, 5) (8716,)

然后我通过]建立模型>

    model = Sequential()
    model.add(LSTM(5, input_shape=(n_steps,n_features),recurrent_dropout=0.2,return_sequences=True))
    model.add(BatchNormalization())
    model.add(Dense(1))    
    model.compile(loss='mean_squared_error', optimizer='adam')

我拟合模型并通过]进行预测>

history = model.fit(train_X, train_y, epochs=10, batch_size=64,validation_data=(test_X, test_y),shuffle=False)


#predict the instances
predicted = model.predict(test_X)

我现在已经预测为(8716, 5, 1)的形状。

我猜这是不正确的,因为预测应该与test_y形状为(8716,)的形状相同。所以当我重塑成反比例时>]

predicted=yhat.reshape(predicted.shape[0], -1).reshape(-1, 1)
inverse_predictions= scaler_y.inverse_transform(predicted)

这给出的形状为(43580, 1),这是错误的,因为预测的尺寸是(8716, 5, 1)而不是(8716,)

我不确定是哪个部分引起了错误。任何帮助表示赞赏。

我有一个带有时间戳和一个值的时间序列数据集(总共只有2列),并训练LSTM预测每个小时的值。所以我准备的数据集就像...

您可以删除return_sequences=True,这应该可以解决此问题。另外,您可以使用展平层,但我认为这不是您要在此处执行的操作。

python numpy neural-network lstm reshape
1个回答
1
投票

您可以删除return_sequences=True,这应该可以解决此问题。另外,您可以使用展平层,但我认为这不是您要在此处执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.