如何解决在使用 Pytorch 的迁移学习理解特征提取方面需要帮助
我正在寻求帮助以了解从预训练模型中提取特征的以下行为。
输出 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,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)
我期望 Output1 与 Output2 几乎相似。但它有很大的不同。在计算F1分数时,output1为0.40
,而Output2为0.09
。
我想我对这里的一些主要方面理解不足。我可以知道我在这里做错了什么吗。
补充一下,最终我想从卷积层中提取特征,应用过采样并进行分类。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。