【问题标题】:Image Feature Extraction in PyTorchPyTorch 中的图像特征提取
【发布时间】:2022-01-26 14:43:48
【问题描述】:

我很难理解这段代码 sn-p。

import torch
import torch.nn as nn
import torchvision.models as models

def ResNet152(out_features = 10):
      return getattr(models, "resnet152")(pretrained=False, num_classes = out_features)

def VGG(out_features = 10):
      return getattr(models, "vgg19")(pretrained=False, num_classes = out_features)

在此代码段中,输入图像的特征由 ResNet152 和 Vgg19 模型提取。但是我有一个问题,是从这些模型的哪个部分提取特征,无论该部分是最后一个池化层还是分类层之前的层或其他什么。

【问题讨论】:

    标签: python pytorch conv-neural-network feature-extraction image-classification


    【解决方案1】:

    注意getattr(models, 'resnet152') 等同于models.resent152

    因此,下面的代码返回模型本身。

    getattr(models, "resnet152")(pretrained=False, num_classes = out_features)
    # is same as
    models.resnet152(pretrained=False, num_classes = out_features)
    

    现在,如果您通过简单的打印来查看模型的结构,最后一层是全连接层,所以这就是您在这里得到的特征。

    print(ResNet152())
    
    ResNet(
      (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
    ...
      (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))
      (fc): Linear(in_features=2048, out_features=10, bias=True)
    )
    

    VGG() 也是如此。

    【讨论】:

    • 那么,我们这里实际上是使用分类层输出作为我们提取的图像特征吗?
    • 是的,您也可以从较早的层获取特征。检查stackoverflow.com/questions/55083642/…我不确定你在关注哪个代码,所以不能评论太多。
    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 2013-02-26
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多