如何以适当的形式将数据输入到 Python 中的 LSTM 预测模型?

问题描述

我想将时间序列数据输入到 LSTM 预测模型。 在我的例子中,输入数据的起始长度是 (53,2),输出数据的长度是 (53,)。

因为我想设计多对一的 LSTM 预测模型, 我想输入两个特征。但是当我执行这段代码时出现错误

训练结果刚刚显示

Epoch 1/50 
WARNING:tensorflow:Model was constructed with shape (None,3,2) for input KerasTensor(type_spec=TensorSpec(shape=(None,2),dtype=tf.float32,name='lstm_1_input'),name='lstm_1_input',description="created by layer 'lstm_1_input'"),but it was called on an input with incompatible shape (None,1,2). 
WARNING:tensorflow:Model was constructed with shape (None,2).
WARNING:tensorflow:Model was constructed with shape (None,2).
2/2 - 1s - loss: nan - val_loss: nan
Epoch 2/50 ...

而且输入到 LSTM 的数据的形状似乎有问题。 我该如何解决这个问题?当我看到这个问题时,我尝试重新排列数据集。也就是说,将重塑代码数量X=np.array(X).reshape(53,2) 更改为X=np.array(X).reshape(53,2,1)。 ...

下面写的代码是我代码的一部分。

X = np.array(X).reshape(53,2)
y = y.reshape(53,1)


X_train,X_test,y_train,y_test = X[:42],X[43:53],y[:42],y[43:53] 
X_train_valid,y_train_valid = X[33:42],y[33:42]


X_train = X_train.reshape(42,2)
y_train = y_train.reshape(42,1)


X_train_valid = X_train_valid.reshape(9,2)
y_train_valid = y_train_valid.reshape(9,1)

X_test = X_test.reshape(10,2)
y_test = y_test.reshape(10,1)

model = Sequential()
model.add(LSTM(50,activation='relu',input_shape=(3,2)))
model.add(Dense(1))
model.summary()
model.compile(optimizer='adam',loss='mse')

history = model.fit(X_train,epochs = 50,verbose = 2,validation_data = (X_train_valid,y_train_valid))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)