Deep learning Pytorch中的微调预训练模型MobileNet_V2

Deep learning Pytorch中的微调预训练模型MobileNet_V2,deep-learning,classification,pytorch,pre-trained-model,mobilenet,Deep Learning,Classification,Pytorch,Pre Trained Model,Mobilenet,我是pyTorch的新手,我正在尝试创建一个分类器,其中我有大约10种图像文件夹数据集,对于这个任务,我使用预训练模型(MobileNet_v2),但问题是我无法更改它的FC层。没有model.fc属性。 有人能帮我做这件事吗。 感谢从中可以看出,该模型最后有一个称为分类器的顺序模型。因此,您应该能够更改分类器的最后一层,如下所示: import torch.nn as nn import torchvision.models as models model = models.mobilenet

我是pyTorch的新手,我正在尝试创建一个分类器,其中我有大约10种图像文件夹数据集,对于这个任务,我使用预训练模型(MobileNet_v2),但问题是我无法更改它的FC层。没有model.fc属性。 有人能帮我做这件事吗。 感谢

从中可以看出,该模型最后有一个称为分类器的顺序模型。因此,您应该能够更改分类器的最后一层,如下所示:

import torch.nn as nn
import torchvision.models as models
model = models.mobilenet_v2()
model.classifier[1] = nn.Linear(model.last_channel, 10)
很遗憾,我现在无法测试此代码。

在如何微调模型方面也是一个很好的参考。

MobilenetV2实现要求将
num_类
(默认值=1000)作为输入,并提供
自分类器
作为属性,该属性是一个torch.nn.Linear层,输出维度为
num_类
。可以使用此属性进行微调。为了更好地理解,你可以自己看一看。

导入torch.nn作为nn
将torchvision.models导入为模型

model=models.mobilnet\u v2(num\u classes=10)
执行以下操作:

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

实际上,模块
torchvision.models
没有属性
mobilnet\u v2
。目前的模型是
[resnet、alexnet、vgg、squeezenet、densenet、inception]
@AnubhavSingh,实际上是在最近的torchvision更新之后。哦,我明白了。我的错。非常感谢。很高兴知道有这些额外的参数!但是需要指出的是,使用
num_classes
参数可以防止下载预训练的模型,这与这个问题的内容非常相似。此外,还有一个更新的代码链接。