Python 1D CNN keras错误形状

Python 1D CNN keras错误形状,python,keras,conv-neural-network,shapes,Python,Keras,Conv Neural Network,Shapes,我正在尝试将一维CNN与我的数据相匹配。数据由MEL频率组成,具有以下特征: X_train.shape = (68251, 99) y_train_hot.shape = (68251, 35)<-- one hot encoding with 35 output classes 当我将X_序列和X_测试分别重塑为(68251,99,1)和(17063,99,1)时,我得到以下错误: ValueError: Input 0 is incompatible with layer conv

我正在尝试将一维CNN与我的数据相匹配。数据由MEL频率组成,具有以下特征:

X_train.shape = (68251, 99)
y_train_hot.shape = (68251, 35)<-- one hot encoding with 35 output classes
当我将X_序列和X_测试分别重塑为(68251,99,1)和(17063,99,1)时,我得到以下错误:

ValueError: Input 0 is incompatible with layer conv1d_7: expected ndim=3, found ndim=4
试着改变

model.add(Convolution1D(nb_filter=32, filter_length=3, input_shape=X_train.shape, activation='relu'))

X\u列车
传递到
fit
功能,无需重新整形

编辑
实际上,我这次编译了您的模型,发现了一些问题并进行了更正:

# create model
model = Sequential()
model.add(Convolution1D(nb_filter=32, filter_length=3, input_shape=(99, 1), activation='relu'))
model.add(Convolution1D(nb_filter=16, filter_length=1, activation='relu'))
model.add(Flatten())
model.add(Dropout(0.2))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu'))
model.add(Dense(35, activation='softmax'))


model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['acc'])
model.fit(X_train, y_train_hot, epochs=5, batch_size=128)
您的输出是2,应该是35,因为您有35个输出类,您的第一个密度不需要输入,因为形状将由上一层推断,并且输入形状是错误的。

希望这有帮助

谢谢您的回复!按照说明更改后运行模型会出现以下错误:ValueError:Input 0与层conv1d_11不兼容:预期ndim=3,发现ndim=2请回答,不幸的是,它仍会引发此错误:ValueError:Input 0与层conv1d_2不兼容:预期ndim=3,发现ndim=4oh抱歉。。它不期望批量大小。我编辑了答案
model.add(Convolution1D(nb_filter=32, filter_length=3, input_shape=(99,), activation='relu'))
# create model
model = Sequential()
model.add(Convolution1D(nb_filter=32, filter_length=3, input_shape=(99, 1), activation='relu'))
model.add(Convolution1D(nb_filter=16, filter_length=1, activation='relu'))
model.add(Flatten())
model.add(Dropout(0.2))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(64, activation='relu'))
model.add(Dense(35, activation='softmax'))


model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['acc'])
model.fit(X_train, y_train_hot, epochs=5, batch_size=128)