Deep learning 利用预训练VGG-16从图像中提取特征向量

Deep learning 利用预训练VGG-16从图像中提取特征向量,deep-learning,computer-vision,pytorch,vgg-net,Deep Learning,Computer Vision,Pytorch,Vgg Net,我想通过将图像通过预先训练过的VGG-16来获得图像的特征向量。我使用经过预训练的Resnet50来获得一个特征向量,这非常有效。但是当我用同样的方法从VGG-16网络中得到一个特征向量时,我没有得到4096-d向量,我认为我应该得到。我从各种来源获得了代码,代码如下: vgg16_model=models.vgg16(pretrained=True) modules=list(vgg16_model.children())[:-1] vgg16_model=nn.Sequential(*mod

我想通过将图像通过预先训练过的VGG-16来获得图像的特征向量。我使用经过预训练的Resnet50来获得一个特征向量,这非常有效。但是当我用同样的方法从VGG-16网络中得到一个特征向量时,我没有得到4096-d向量,我认为我应该得到。我从各种来源获得了代码,代码如下:

vgg16_model=models.vgg16(pretrained=True)
modules=list(vgg16_model.children())[:-1]
vgg16_model=nn.Sequential(*modules)

data=moveaxis(data,2,0)
img_var=Variable(torch.from_numpy(data).unsqueeze(0)).float()
features_var=vgg16_model(img_var)
features=features_var.data
features=features.data.numpy()
print(features.shape)
变量
“data”
是维度
(3004003)
因此,我使用移动轴来混淆轴,因此我有3个通道,而不是300个通道。 我得到的输出(
features.shape
)是:
(1512,7,7)
我想要一个4096-d向量,就像VGG-16在softmax层之前给出的那样。 我甚至尝试了
列表(vgg16_model.classifier.children())[:-1]
方法,但效果也不太好。关于这一点有很多讨论,但没有一个对我有用。让我知道我可能会出错的地方。谢谢大家!