【发布时间】:2020-03-12 14:11:54
【问题描述】:
我有一个大型工作模型,我想将最后一个密集层更改为卷积层(带有池化和输出)。但是使用 cnn 时出现以下错误:
ValueError: 层 conv1d_21 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2。收到的完整形状:[无,768]
这是在尝试使用 cnn 之前最后一层的样子:
dense = model.get_layer('NSP-Dense').output
outputs = keras.layers.Dense(len(100), activation='sigmoid')(dense)
这是使用 CNN 时的样子以及发生错误的位置(在第二行):
dense = model.get_layer('NSP-Dense').output
conv = keras.layers.Conv1D(filters=32, kernel_size=8, activation='relu')(dense)
pooling = keras.layers.MaxPooling1D(pool_size=2)(conv)
flatten = keras.layers.Flatten()(pooling)
mid_dense = keras.layers.Dense(400, activation='relu' )(flatten)
outputs = keras.layers.Dense(len(test_y[0]), activation='sigmoid')(mid_dense)
我读过this 和this 之类的问题,但我的问题似乎是另一个问题,因为CNN 不是第一层而是位于网络的中间。
NSP-Dense 层的输出形状为 (None, 768)。我尝试将转换层中的形状设置为input_shape =(None, 768)或input_shape =(None, 768, 1),但这并没有解决问题。有人有想法吗?
【问题讨论】:
标签: python keras conv-neural-network