需要帮助理解使用Pytorch迁移学习进行特征提取吗

需要帮助理解使用Pytorch迁移学习进行特征提取吗,pytorch,feature-extraction,transfer-learning,Pytorch,Feature Extraction,Transfer Learning,我正在寻求帮助,了解从预训练模型中提取特征的以下行为 输出1: def get_net(): model = bninception(pretrained="imagenet") model.gp = nn.AdaptiveAvgPool2d(1) model.conv = nn.Conv2d(config.channels, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3)) model.la

我正在寻求帮助,了解从预训练模型中提取特征的以下行为

输出1:

def get_net():
   model = bninception(pretrained="imagenet")
   model.gp = nn.AdaptiveAvgPool2d(1)
   model.conv = nn.Conv2d(config.channels, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3))
   model.last = nn.Sequential(nn.BatchNorm1d(1024),nn.Dropout(0.5),nn.Linear(1024, config.num_classes))      
   return model

model = get_net()
model.cuda()
output1 =model(images)
输出2: 我正在寻找在
model.conv
上获得的功能,因此我删除了后面的部分,如下所示

def get_net():
    model = bninception(pretrained="imagenet")
    model.gp = nn.AdaptiveAvgPool2d(1)
    model.conv = nn.Conv2d(config.channels, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3))
    return model 



model = get_net()
model.cuda()
features = model(images)
并将N个图像的功能设置为:
[N,1000]
。我将这些特性输入以下内容

class ManualLinearRegression(nn.Module):
    def __init__(self):
       super(ManualLinearRegression,self).__init__()
            #self.linear = nn.Linear(1000, 28)
            self.linear = nn.Sequential(
                    nn.BatchNorm1d(1000),#1024
                    nn.Dropout(0.5),
                    nn.Linear(1000, config.num_classes),
                ) 

     def forward(self, x):
            return self.linear(x)

model = ManualLinearRegression().cuda()
output2 = model(images)
我期望输出1几乎与输出2相似。但情况大不相同。在计算F1分数时,output1
0.40
,而Output2
0.09

我想我对这里的一些主要方面还不够了解。我可以知道我做错了什么吗

最后,我想从卷积层提取特征,应用过采样并进行分类

多谢各位