python - ValueError: 层序贯_17 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,121]
问题描述
我正在尝试使用 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)
解决方案
尝试这个
numpy.expand_dims(X_train, axis=0)
推荐阅读
- r - 在 lappy(或循环)中创建向量
- ios - 当返回到导航堆栈中的前一个 ViewController 时,UI 会冻结一秒钟
- python-3.x - 从字符串中添加数字
- amazon-systems-manager - 使用 Amazon Systems Manager 如何安装适用于 Linux 的 AWS CLI
- database - Firebase - 将许多应用程序添加到一个项目中
- react-native - 如何使用反应原生文件系统访问设备文件夹
- c# - “SmtpPickupDirAppender”不包含“SmtpHost”的定义,并且没有可访问的扩展方法“SmtpHost”接受第一个参数
- flutter - 我如何上传用户信息,以便其他用户可以在他们自己的个人资料中看到它而不会出现错误
- .htaccess - 查询的htaccess重写规则不起作用
- android - OptionsMenu 在方向改变时从片段中消失