【问题标题】:Keras Convolution1D input shapeKeras Convolution1D 输入形状
【发布时间】:2018-11-21 09:04:58
【问题描述】:

我正在尝试构建一个简单的卷积神经网络:

  • 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: Input 0 is in compatible with layer conv1d_1: expected ndim=3, found ndim=4

我很迷茫,我相信我的形状不正常。有人可以帮我吗? 谢谢!

【问题讨论】:

    标签: python tensorflow keras deep-learning


    【解决方案1】:

    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)

    【讨论】:

    • 这似乎不起作用,现在的错误是:ValueError: Error when checks input: expected conv1d_1_input to have shape (16, 260) but got array with shape (260, 16)
    • 使用batch_input_shape=(340, 16, 260)时是这样吗?
    猜你喜欢
    • 2018-02-16
    • 2020-06-10
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多