Python `TimeDistributed`层应传递一个至少具有3维的'input_shape',接收:[None,400]
我试图合并CNN和LSTM进行文本分类,但得到了时间分布层的维度错误。我的训练数据的输入形状是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
(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)