Python 关于如何为lstm塑造数据形状的建议

Python 关于如何为lstm塑造数据形状的建议,python,tensorflow,keras,regression,lstm,Python,Tensorflow,Keras,Regression,Lstm,我有一个933个矩阵的时间序列,每个矩阵是一个8x10矩阵。这是我的X(输入)。所以X有形状(933,8,10)。 Y(输出)是933个向量的时间序列,每个向量是5维向量。所以Y有形状(933,1,5) 我还可以重塑数据(我应该吗?),比如X是(933,80)和Y是(933,5),因为实际上最终输入的是一组80个数字中的933个样本(想象矩阵中的80个像素),输出的是一组5个数字中的933个样本 我正在写CNN-LSTM。我仍然不知道训练/测试的大小,现在让我们假设我想使用所有933个样本进行训

我有一个933个矩阵的时间序列,每个矩阵是一个8x10矩阵。这是我的X(输入)。所以X有形状(933,8,10)。 Y(输出)是933个向量的时间序列,每个向量是5维向量。所以Y有形状(933,1,5)

我还可以重塑数据(我应该吗?),比如X是(933,80)和Y是(933,5),因为实际上最终输入的是一组80个数字中的933个样本(想象矩阵中的80个像素),输出的是一组5个数字中的933个样本

我正在写CNN-LSTM。我仍然不知道训练/测试的大小,现在让我们假设我想使用所有933个样本进行训练。我的模型是:

model = Sequential()
# define CNN model
model.add(TimeDistributed(Conv2D(1, (2,2), activation='relu', padding='same', input_shape=(None,8,10))))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2, 2))))
model.add(TimeDistributed(Flatten()))
# define LSTM model
model.add(LSTM(933, activation='relu', input_shape=(8,10)))       
model.add(Dense(5))
model.compile(optimizer='adam', loss='mse')
model.fit(X, Y)
我得到以下错误: ValueError:输入张量必须具有秩4


我的问题是为什么会出现此错误以及如何解决此问题?

对于LSTM,输入必须是
3D
,即
(示例、时间步长、功能)

在您的情况下,您需要将数据重塑为
(933,8,10)

在LSTM层中,参数
input\u shape
采用两个值的元组,定义
时间步数
特征数
。 在您的情况下,它将是
(8,10)

LSTM层的单位数可以是32,64或128。单元过多无助于模型学习

下面是数据的示例LSTM层

data.shape= (933,8,10) 

model = Sequential()
model.add(LSTM(32, input_shape=(8, 10)))
model.add(Dense(5))
model.compile(optimizer='adam', loss='mse')
model.fit(X, Y)

对于使用LSTM的时间序列预测,您需要以特定的方式塑造数据。退房。请更新问题,我很乐意为您提供帮助。