Python 层顺序的输入0与预期ndim=3的层不兼容,发现ndim=2。收到完整形状:[无,1]

Python 层顺序的输入0与预期ndim=3的层不兼容,发现ndim=2。收到完整形状:[无,1],python,tensorflow,keras,model-fitting,Python,Tensorflow,Keras,Model Fitting,我正在与keras合作进行文本分类。预处理和矢量化后,我的训练和验证数据详细信息如下: print(X_train.shape, ',', X_train.ndim, ',', type(X_train)) print(y_train.shape, ',', y_train.ndim, ',', type(y_train)) print(X_valid.shape, ',', X_valid.ndim, ',', type(X_valid)) print(y_valid.shape, ',',

我正在与keras合作进行文本分类。预处理和矢量化后,我的训练和验证数据详细信息如下:

print(X_train.shape, ',', X_train.ndim, ',', type(X_train))
print(y_train.shape, ',', y_train.ndim, ',', type(y_train))
print(X_valid.shape, ',', X_valid.ndim, ',', type(X_valid))
print(y_valid.shape, ',', y_valid.ndim, ',', type(y_valid))
print(data_dim)
输出为:

(14904,) , 1 , <class 'numpy.ndarray'>
(14904,) , 1 , <class 'numpy.ndarray'>
(3725,) , 1 , <class 'numpy.ndarray'>
(3725,) , 1 , <class 'numpy.ndarray'>
15435
模型摘要:

模型拟合:

model.fit(X_train,y_train, validation_data = (X_valid, y_valid),
          batch_size=batch_size, epochs=epochs)
为什么会发生这种错误

----> 1 model.fit(X_train,y_train, validation_data = (X_valid, y_valid),
      2           batch_size=batch_size, epochs=epochs)
...
...

    ValueError: Input 0 of layer sequential is incompatible with the layer:
              expected ndim=3, found ndim=2. Full shape received: [None, 1]

在老师的帮助下,我终于克服了这个问题

我将数据维度更改为:

print(X_train.shape)
print(y_train.shape)
print(X_valid.shape)
print(y_valid.shape)
print(X_test.shape)
print(y_test.shape)
print(data_dim)
########################## output ###########################
(14904, 15435)
(14904,)
(3725, 15435)
(3725,)
(5686, 15435)
(5686,)
15435
然后将数据重塑为:

X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_valid = np.reshape(X_valid, (X_valid.shape[0], 1, X_valid.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
########################## output ###########################
(14904, 1, 15435)
(3725, 1, 15435)
(5686, 1, 15435)
最后将
LSTM
input\u shape
更改为:

model.add(LSTM(units=50, input_shape=(1, data_dim), return_sequences=True))
现在,模型摘要是:



现在没有问题,
model.fit
执行得很好。

输入到
LSTM
的应该是三维的,因此
预期ndim=3
@Kenan那么,我该怎么办?应该有帮助you@Kenan我以前读过,不过还是谢谢你。
model.add(LSTM(units=50, input_shape=(1, data_dim), return_sequences=True))