【问题探究】torchvision实践中特征提取的问题的纪录(待解决)

本文记录了在使用torchvision的resnet101进行特征提取时遇到的问题。作者发现forward()仅输出类别向量而非特征图,并尝试修改模型以获取特征,但遇到了困难。经过实验,作者发现直接修改类比修改实例能避免错误,但问题仍未解决,将继续深入研究torchvision源码。
摘要由CSDN通过智能技术生成

前言:

{

    最近在调试一个包括efficientnet[1]的网络,其中efficientnet部分被用来做特征提取。我在尝试把efficientnet换成torchvision[2]中的其他网络。但是在第一次尝试resnet101时就发现了这个问题。

}

 

正文:

{

    在阅读torchvision中的resnet部分的源码[3]后,我发现这里貌似不提供提取特征的方法,运行计算的方法只有forward()(代码1),但是forward输出的是最后的类别向量,而我需要的是特征图。

#代码1,resnet

def forward(self, x):
    x = self.conv1(x)
    x = self.bn1(x)
    x = self.relu(x)
    x = self.maxpool(x)

    x = self.layer1(x)
    x = self.layer2(x)
    x = self.layer3(x)
    x = self.layer4(x)

    x = self.avgpool(x)
    x = torch.flatten(x, 1)
    x = self.fc(x)

    return x

    我想了一下,修改torchvision的原代码不是很容易,我决定在我的代码里对ResNet类或其实例进行修改。添加提取特征的成员函数或修改forward()都不是很方便,因为就像代码1展示的那样,每种网络都有特定的结构,这样做的话我需要为所有我使用的torchvision模型做单独修改。

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值