Python 关于如何为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个样本进行训练。我的模型是: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个样本进行训
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的时间序列预测,您需要以特定的方式塑造数据。退房。请更新问题,我很乐意为您提供帮助。