我是 pyTorch 的新手,我正在尝试创建一个分类器,其中我有大约 10 种图像文件夹数据集,对于这个任务,我使用的是预训练模型( MobileNet_v2 ),但问题是我无法更改它的 FC 层. 没有 model.fc 属性。谁能帮我做到这一点。谢谢
问问题
7869 次
3 回答
8
从MobileNet V2 源代码看来,这个模型最后有一个称为分类器的顺序模型。因此,您应该能够像这样更改分类器的最后一层:
import torch.nn as nn
import torchvision.models as models
model = models.mobilenet_v2()
model.classifier[1] = nn.Linear(model.last_channel, 10)
不幸的是,我现在无法测试这段代码。
这也是一个很好的参考,关于如何微调模型。
于 2019-07-31T08:25:18.270 回答
6
执行以下操作:
import torch
model = torch.hub.load('pytorch/vision', 'mobilenet_v2', pretrained=True)
print(model.classifier)
model.classifier[1] = torch.nn.Linear(in_features=model.classifier[1].in_features, out_features=10)
print(model.classifier)
输出:
Sequential(
(0): Dropout(p=0.2)
(1): Linear(in_features=1280, out_features=1000, bias=True)
)
Sequential(
(0): Dropout(p=0.2)
(1): Linear(in_features=1280, out_features=10, bias=True)
)
注意:您需要torch >= 1.1.0
使用torch.hub
.
于 2019-07-31T12:42:26.287 回答
2
MobilenetV2 实现要求num_classes
(default=1000) 作为输入,并self.classifier
作为一个属性提供,它是一个 torch.nn.Linear 层,输出维度为num_classes
. 您可以使用此属性进行微调。您可以自己查看代码以更好地理解。
import torchvision.models as models
model = models.mobilnet_v2(num_classes=10)
于 2019-07-31T08:26:36.650 回答