Python `TimeDistributed`层应传递一个至少具有3维的'input_shape',接收:[None,400]

Python `TimeDistributed`层应传递一个至少具有3维的'input_shape',接收:[None,400],python,tensorflow,deep-learning,lstm,cnn,Python,Tensorflow,Deep Learning,Lstm,Cnn,我试图合并CNN和LSTM进行文本分类,但得到了时间分布层的维度错误。我的训练数据的输入形状是(11800400),测试数据的输入形状是(2951,2)。代码正在通过ValueError:TimeDistributed层应传递一个至少具有3个维度的input\u shape,收到:[None,400] 以下是我的代码片段: n_timesteps, n_features, n_outputs = X_train.shape[0], X_train.shape[1], 2 print(X_trai

我试图合并CNN和LSTM进行文本分类,但得到了时间分布层的维度错误。我的训练数据的输入形状是
(11800400)
,测试数据的输入形状是
(2951,2)
。代码正在通过ValueError:
TimeDistributed
层应传递一个至少具有3个维度的
input\u shape
,收到:[None,400]

以下是我的代码片段:

n_timesteps, n_features, n_outputs = X_train.shape[0], X_train.shape[1], 2
print(X_train.shape[0],  X_train.shape[1])
print(Y_test.shape)
model = Sequential()
# define CNN model
model.add(TimeDistributed(Conv1D(128, kernel_size=3, activation='relu',input_shape=(n_timesteps,n_features,n_outputs))))
model.add(TimeDistributed(GlobalMaxPooling1D()))
model.add(TimeDistributed(Flatten()))
# define LSTM model
model.add(LSTM(64, return_sequences=True))
model.add(Dense(2))

model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])

print('Train...')

historyCNN = model.fit(X_train, Y_train,
            batch_size=32,
            epochs=10,
            validation_split=0.2)


请说明如何缓解
TimeDistribution
层的此维度问题,以便进一步传输到
LSTM
层。

根据TimeDistributed层参考,您应提供[batch,timesteps,[data]]形状以供输入。在您的情况下,如果您有一个批次,那么它应该是(11800400)

我已经通过使用
X=X\u序列以这种方式(11800400,1)重塑我的数据解决了问题。重塑(len(X\u序列),400,1)