ResNet50 keras在top=False时给出错误的形状输出

2024-03-28 09:02:05 发布

您现在位置:Python中文网/ 问答频道 /正文

对于迁移学习,我使用ResNet50作为特征提取器。通过使top=False,我从最后一层之前的层获取输出。作为ResNet50的文档,输出的大小应为(#examples, 7, 7, 2048)。但我面临一个奇怪的问题。我得到了(#examples, 8, 8, 2048)的输出形状。代码如下:

model = ResNet50(weights="imagenet", include_top=False)
# batchImages is a list containing images in that batch
# bs is the batch size
features = model.predict(batchImages, batch_size = bs) 

这里特征的形状应该是(#examples, 7, 7, 2048),但它给出了(#examples, 8, 8, 2048)。为什么会这样


Tags: 代码文档falsesizemodelbsistop
2条回答

正如我所发现的,ResNet50中的输出特征大小(top=False)取决于图像的输入形状。虽然在文档中,我发现在这种情况下,输出特征形状是(#examples, 7, 7, 2048),但当我更改输入图像形状时,它会发生变化。尽管我在任何地方都没有找到任何关于这方面的澄清。但正如我所看到的,每当我使用大小为(224 x 224)的图像时,它的工作完全正常。但是,当我将输入图像的大小增加到(255 x 255)时,输出特征向量的大小将更改为(#examples, 8, 8, 2048)。这看起来很奇怪,但实际上正在发生

这是绝对正常的,ResNet中的大小减少是由每个块后大小为2x2的MaxPooling给出的。由于Resnet中有5个块,因此您将始终获得输入\u size/2**5。 224 / 32 = 7 256/32=8

相关问题 更多 >