赞
踩
a=vgg.features(img)#使用feature获取特征层(卷积层)的特征;输出特征维度为【1,512,4,4】
b=vgg.avgpool(a)#使用vgg定义的池化操作;输出特征维度为【1,512,7,7】
b=torch.flatten(b,1)#将特征变成一维度;输出特征维度为【1,25088】
c=vgg.classifier[:1]#使用分类层的的第一层,当然可以选择数;输出特征维度为【1,4096】
需要pytorch预训练模型VGG19提取图像特征,但VGG19最后一层输出1000维的图像分类结果。我们仅仅需要模型中某一层的输出特征,例如全连接层4096维度的特征。
import torch
import torchvision.models as models
# 如果联网使用pytorch的预训练模型,
# 将pretrained设置为True, 就会自动下载vgg19的模型放在本地缓存中.
vgg = models.vgg19(pretrained=True)
print(vgg)
可以看到vgg有features,avgpool,classifier三部分组成
在vgg19下右击鼠标,依次选择goto,implementations
找到forward部分,我们发现vgg总共分四步执行,这样我们可以分步获得图像的特征
4、自定义获取图像的特征
a=vgg.features(img)#使用feature获取特征层(卷积层)的特征;输出特征维度为【1,512,4,4】
b=vgg.avgpool(a)#使用vgg定义的池化操作;输出特征维度为【1,512,7,7】
b=torch.flatten(b,1)#将特征变成一维度;输出特征维度为【1,25088】
c=vgg.classifier[:1]#使用分类层的的第一层,当然可以选择数;输出特征维度为【1,4096】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。