在迁移学习中可以使用不同的图像尺寸吗?

我最近从TensorFlow转到了PyTorch。我使用一个著名的Github仓库来训练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的官方输入尺寸是456×456,但我使用了512×512甚至256×256,并且取得了非常不错的结果。这是正常的吗?还是我错过了作者会为你调整到原生分辨率的源代码部分?

附注:这似乎是我在Kaggle上看到的所有PyTorch教程中的常态。我的完整代码可以在这里查看笔记本;我喜欢不留下逻辑漏洞,因此这个问题就出现了。


回答:

是的,在进行迁移学习时,你可以使用不同的输入尺寸,归根结底,你加载的模型只是固定层序列和固定卷积核尺寸的权重集合。但我认为模型需要一个最小的尺寸才能高效工作。你仍然需要重新训练模型,但它仍然会很快收敛。

你需要检查官方实现中关于模型最小尺寸的说明,比如在VGG16中,他们规定宽度和高度至少需要32

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注