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

Posted

技术标签:

【中文标题】ValueError: 层序贯_17 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,121]【英文标题】:ValueError: Input 0 of layer sequential_17 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 121] 【发布时间】:2021-05-10 15:50:20 【问题描述】:

我正在尝试使用 NSL-KDD 数据集构建循环神经网络。当我运行下面的代码时,我不断收到 ValueError:层序贯_17 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,121]。我不知道为什么,我可能与输入形状有关?我不确定,因为我还是 python 新手。如果有帮助,我也已完成所有数据预处理。

from keras.utils import np_utils
from keras.models import Sequential
from keras.preprocessing import sequence
from keras.layers import Dense, Dropout, Activation, Embedding
from keras.layers import LSTM, SimpleRNN, GRU
from keras.utils import np_utils
from keras import callbacks
from keras.callbacks import ModelCheckpoint, EarlyStopping, ReduceLROnPlateau, CSVLogger
import tensorflow.keras as keras
print (X_train.shape),(y_train2.shape)
(125973, 121)
(None, (125973,))
batch_size = 99
epcochs = 100
model = Sequential()
model.add(LSTM(10,batch_input_shape =(None, 99, 1), return_sequences=True ))
model.add(Dropout(0.01))
model.add(LSTM(10,return_sequences=True))
model.add(Dropout(0.01))
model.add(LSTM(10,return_sequences=False))
model.add(Dropout(0.01))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=keras.optimizers.Adam() , metrics=['accuarcy'])
fit=model.fit(X_train, y_train2, batch_size=batch_size, epochs=100, validation_data=(X_test, y_test2))
loss, accuracy = model.evaluate(X_test, y_test1)
print("\nLoss: %.2f, Accuracy: %.2f%%" % (loss, accuracy*100))
y_pred = model>predict_classes(X_test)

【问题讨论】:

batch_input_shape =(None, 99, 1) 但您的第一个输入是无。此外,如果不知道 x_train 和 y_train 的形状,也很难说出来。 在上面加了,不知道为什么y_train2有点没有值 你对 y_train 做了哪些操作? 我为 y_train2 y_test2 = test_target2.astype('category').cat.codes做了这个 【参考方案1】:

试试这个

numpy.expand_dims(X_train, axis=0)

【讨论】:

以上是关于ValueError: 层序贯_17 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,121]的主要内容,如果未能解决你的问题,请参考以下文章

ValueError 层序贯_13的输入0与层不兼容:预期ndim = 3,发现ndim = 4收到完整形状:(无,无,无,无)

DNN 中的错误:层序贯_10 的输入 0 与层不兼容

ValueError:检查目标时出错:预期 activation_17 具有 2 维,但得到的数组形状为 (1, 256, 256, 3)

ValueError:输入 0 与层 lstm_13 不兼容:预期 ndim=3,发现 ndim=4

ValueError:输入 0 与层 lstm_1 不兼容:预期 ndim=3,发现 ndim=2 [keras]

ValueError:检查输入时出错:预期dense_11_input 具有3 维,但得到了形状为(0, 1) 的数组