需要帮助理解使用Pytorch迁移学习进行特征提取吗
我正在寻求帮助,了解从预训练模型中提取特征的以下行为 输出1:需要帮助理解使用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
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
我想我对这里的一些主要方面还不够了解。我可以知道我做错了什么吗
最后,我想从卷积层提取特征,应用过采样并进行分类
多谢各位