【问题标题】:Keras CNN incompatible inputKeras CNN 输入不兼容
【发布时间】:2017-03-11 22:14:33
【问题描述】:

我是 keras 新手,还没有弄清楚维度规则。我使用 TF 后端并通过以下代码不断获取此 ValueError。这个想法是使用 2 个 1D 卷积层,每个层都需要处理 1 个长度为 6 的时间序列数组。然后这些输出需要合并并在 2D 卷积层中进行卷积。感谢您的帮助。

NN1 = Sequential()
NN1.add(Convolution1D(4, 2,
                         input_dim=6,
                         activation='relu'))

NN2 = Sequential()
NN2.add(Convolution1D(4, 2,
                         input_dim=6,
                         activation='relu'))

TNN    = Sequential()
TNN.add(Merge([NN1, NN2], mode='concat', concat_axis=1))
TNN.add(Convolution2D(2, 2, 2, input_shape=(2, 4, 1, 2), activation='relu'))

ValueError: Input 0 is incompatible with layer convolution2d_1: expected ndim=4, found ndim=3

【问题讨论】:

  • 您能提供给我们您的数据形状吗?
  • 数据形状为 (1, 1, 6)。
  • 这意味着你的输入是一个时间步长的序列?
  • 我的输入将是一个包含 6 个时间步序列的数组。
  • 所以它应该有形状(nb_of_samples, timesteps, features)

标签: python-3.x tensorflow keras


【解决方案1】:

交谈后,我建议您执行以下操作:

TNN.add(Merge([NN1, NN2], mode='concat', concat_axis=-1))
TNN.add(Convolution1D(2, 2, activation='relu'))
TNN.add(GlobalMaxPooling1D())
TNN.add(Dense(...)) # Put your parameters here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多