对于转移学习,我使用ResNet50作为特征提取器。通过使top = False,我从最后一层之前的那层中获取输出。输出的大小应该是 (#examples, 7, 7, 2048)
作为ResNet50的文档。但我遇到了一个奇怪的问题。我得到的输出形状是 (#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)
. 为什么会出现这种情况?
我发现ResNet50的输出特征大小(top = False)取决于图像的输入形状。虽然在文档中,我发现在这种情况下,输出特征形状将是 (#examples, 7, 7, 2048)
但当我改变输入图像的形状时,它就会改变。虽然我没有在任何地方找到任何关于这个问题的说明。但我看到,每当我使用尺寸为 (224 x 224)
工作完全正常。但是当我把输入图片的大小增加到 (255 x 255)
输出特征向量大小变为 (#examples, 8, 8, 2048)
. 这看起来很奇怪,但实际上这是发生。