您可以在迁移学习期间使用不同的图像大小吗?

时间:2020-12-31 04:11:32

标签: machine-learning deep-learning neural-network pytorch transfer-learning

我最近从 TensorFlow 切换到 PyTorch。我使用著名的 Github repo 来训练 EfficientNets。我写的模型启动类如下:

class CustomEfficientNet(nn.Module):
    def __init__(self, config: type, pretrained: bool=True):
        super().__init__()
        self.config = config
        self.model = geffnet.create_model(
            model_name='EfficientNetB5',
            pretrained=pretrained)
        n_features = self.model.classifier.in_features
        self.model.classifier = nn.Linear(n_features, num_classes=5)
        

    def forward(self, input_neurons):
        output_predictions = self.model(input_neurons)
        return output_predictions

此外,在我的 transforms 中,我倾向于使用Resize(img_size = 512, img_size=512) 进行某些图像分类任务(主要是 Kaggle 比赛)的训练。所以这里的问题是,EfficientNetB5 的官方输入大小是 456x456,但我使用了 512x512 甚至 256x256 并得到了非常不错的结果。这是正常的吗?或者我错过了作者会为你调整到原始分辨率的源代码?

PS:这似乎是我在 Kaggle 上看到的所有 PyTorch 教程中的常态。我的完整代码可以在此处的 notebook 中查看;我喜欢不留下逻辑空白,因此出现了这个问题。

1 个答案:

答案 0 :(得分:1)

是的,在迁移学习方面,您可以使用不同的输入大小,毕竟您加载的模型只是固定层序列和固定卷积核大小的一组权重。但我相信模型需要某种最小尺寸才能有效工作。您仍然需要重新训练模型,但它仍然会很快收敛。

您必须检查模型最小尺寸的官方实现,例如 VGG16 中的模型,其中指定宽度和高度至少需要为 32