为什么高效网络B0的输出是二维的?



我从论文中知道:Efficientnet B0 的输出是 (*,7,7,1280(,对吧?如果是这样,globalAveragePooling2D 将得到 ndim = 4,而不是 2。

model=Sequential()
inputS=(height,width,depth)
chanDim=-1
model.add(EfficientNetB0(inputS, include_top=True, weights='imagenet'))
model.add(GlobalAveragePooling2D())
model.add(Dense(1024))
model.add(Activation("swish"))
model.add(BatchNormalization(axis=chanDim))
model.add(Dropout(0.25))
model.add(Dense(256))
model.add(Activation("swish"))
model.add(BatchNormalization(axis=chanDim))
model.add(Dropout(0.25))
model.add(Dense(32))
model.add(Activation("tanh"))
model.add(BatchNormalization(axis=chanDim))
model.add(Dropout(0.25))
model.add(Dense(classes))
model.add(Activation("softmax"))
return model
ValueError: Input 0 is incompatible with layer global_average_pooling2d_2: expected ndim=4, found ndim=2

这是因为您将include_top设置为True,这意味着分类层包含在模型中,因此整个模型的输出形状(samples, classes),这可能不是您想要的。

由于您想要特征映射,因此您应该在EfficientNetB0的实例化中将include_top设置为False

相关内容

  • 没有找到相关文章

最新更新