Python 3.x 具有keras的一维卷积网络,输入大小误差
我正试图为我的数据集建立一个卷积神经网络。我的培训数据集有1209个示例,每个示例包含800个功能 下面是代码的一部分:Python 3.x 具有keras的一维卷积网络,输入大小误差,python-3.x,keras,conv-neural-network,keras-layer,Python 3.x,Keras,Conv Neural Network,Keras Layer,我正试图为我的数据集建立一个卷积神经网络。我的培训数据集有1209个示例,每个示例包含800个功能 下面是代码的一部分: model = Sequential() model.add(Conv1D(64, 3, activation='linear', input_shape=(1209, 800))) model.add(GlobalMaxPooling1D()) model.add(Dense(1, activation='linear')) model.compile(loss=loss_
model = Sequential()
model.add(Conv1D(64, 3, activation='linear', input_shape=(1209, 800)))
model.add(GlobalMaxPooling1D())
model.add(Dense(1, activation='linear'))
model.compile(loss=loss_type, optimizer=optimizer_type, metrics=[metrics_type])
model.fit(X, Y, validation_data=(X2,Y2),epochs = nb_epochs,
batch_size = batch_size,shuffle=True)
编译此代码时,出现以下错误:
Error when checking input: expected conv1d_25_input to have 3 dimensions,
but got array with shape (1209, 800)
所以我添加了一个维度,下面是我要做的:
X = np.expand_dims(X, axis=0)
X2 = np.expand_dims(X2, axis=0)
然后我得到这个错误:
ValueError: Input arrays should have the same number of samples as target arrays.
Found 1 input samples and 1209 target samples.
我的训练数据现在有这样一个形状(1129800),是否应该是其他形状
非常感谢您阅读此文章。您应该在轴2上展开尺寸,而不是在轴0处展开X上的尺寸。因此,您需要的不是
X=np.expand_dims(X,axis=0)
,而是X=np.expand_dims(X,axis=2)
之后,
X
的形状应该是(1209800,1),然后您应该在第一层中指定input\u shape=(800,1)
。感谢您回答@blackHoleDetector。指定此输入形状时,出现以下错误:ValueError:输入0与层conv1d_27不兼容:预期ndim=3,发现ndim=2@VincentBrisse谢谢你的更新。我刚刚更新了我的答案。试试看。我相信这会让你工作。很高兴听到@VincentBrisse!我在YouTube上有几个Keras视频,你可能会发现它们很有用(几乎每天都会添加更多)。卷积神经网络和微调是下一个主题,如果您感兴趣,将发布。你的Y.shape
是什么?@MarcinMożejko它是(1209,1),因为在我的数据集中有1209个示例,每个示例只有一个输出。我试着用Y=np来改变它。expand_-dims(Y,axis=0)Y2=np。expand_-dims(Y2,axis=0)但毫无帮助