Keras Convolution1D输入形状

时间:2018-06-12 04:14:14

标签: python tensorflow keras deep-learning

我正在尝试用:

构建一个简单的卷积NN
  • 340个样本,
  • 每个样本260行
  • 每行16个功能。

我认为形状的顺序是(batch_size,steps,input_dim),这意味着(340,16,260)我相信

当前代码:

model = Sequential()
model.add(Conv1D(64, kernel_size=3, activation='relu', input_shape=(340, 16, 260)))
# model.add(Conv2D(64, 2, activation='relu'))
model.add(MaxPooling1D())
# model.add(Conv2D(128, 2, activation='relu'))
model.add(Conv1D(64, kernel_size=3, activation='relu'))
model.add(GlobalAveragePooling1D())
model.add(Dense(1, activation='linear'))

model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

model.summary()

model.fit(xTrain, yTrain, batch_size=16, epochs=1000)

我收到错误:

  

ValueError:输入0与图层conv1d_1不兼容:预期ndim = 3,找到ndim = 4

我很迷茫,相信我的形状已经消失了。有人能帮助我吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

this answer中所述,Keras中的图层接受两个参数:input_shapebatch_input_shape。区别在于input_shape 包含批量大小,而batch_input_shape完整输入形状,包括批量大小。

基于此,我认为规范input_shape=(340, 16, 260)告诉keras期望一个4维输入,这不是你想要的。正确的论点是batch_input_shape=(340, 16, 260)