将全连接层转换为 Conv2D 并预测输出?



我正在尝试将扁平层作为convd2d的输入,并使用cifar-10数据集预测Densenet上10类分类问题的输出。 以下代码片段,我收到错误。

global compression
BatchNorm = layers.BatchNormalization()(input)
relu = layers.Activation('relu')(BatchNorm)
AvgPooling = layers.AveragePooling2D(pool_size=(2,2))(relu)
flat = layers.Flatten()(AvgPooling)
# output = layers.Dense(num_classes, activation='softmax')(flat)
output = layers.Conv2D(filters=10,kernel_size=3,strides=1,activation='softmax',padding='valid')(flat)

我收到以下错误

ValueError: Input 0 is incompatible with layer conv2d_513: expected ndim=4, found ndim=2

谁能告诉我如何解决它。 提前谢谢。

output = layers.Conv2D(filters=10, kernel_size=(1,1),strides =(2,2))

此代码会将密集层更改为相应的 Conv2D 层。但是为了避免任何错误,您需要添加softmax作为不同的图层。它应该看起来像这样:

not_final = layers.Activation('softmax')(output)
result = layers.Flatten()(not_final)

相关内容

  • 没有找到相关文章

最新更新