首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测量预先训练的模型(如vgg、resnet.)提取的图像特征之间的语义相似性?

如何测量预先训练的模型(如vgg、resnet.)提取的图像特征之间的语义相似性?
EN

Stack Overflow用户
提问于 2021-09-09 09:06:30
回答 1查看 291关注 0票数 0

据我所知,经过预先训练的模型在许多任务中发挥良好的特征提取器,这要归功于他们丰富的训练数据集。

但是,我想知道这个模型,比如说vgg-16

具有一定的从输入图像中提取“语义”信息的能力。

如果答案是肯定的,给定一个unlabeled dataset

可以通过测量提取的特征的语义相似性来“聚类”图像吗?

事实上,我花了一些精力:

224).

  • Fine-tune

  • 通过Pytorch加载预训练的vgg-16,

  • 加载Cifar-10数据集并转换为批处理-张量X (5000,3,224, vgg.classifier,将其输出维定义为4096.
  1. Extract特性:

)。

代码语言:javascript
复制
 features = vgg.features(X).view(X.shape[0], -1) # X: (5000, 3, 224, 224)

 features = vgg.classifier(features) # features: (5000, 25088)

 return features # features: (5000, 4096)

然而,

  1. 尝试了cosine similarityinner producttorch.cdist,却发现了几个不好的集群。

有什么建议吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-09 09:37:33

您可能不想一直走到最后一层,因为这些层包含特定于当前分类任务的特性。使用分类器中较高层次的特性可能会有所帮助。另外,由于VGG-16的分类器中有一个退出层,所以您希望切换到eval模式。

代码语言:javascript
复制
>>> vgg16 = torchvision.models.vgg(pretrained=True).eval()

截断分类器:

代码语言:javascript
复制
>>> vgg16.classifier = vgg16.classifier[:4]

现在,vgg16的分类器看起来如下:

代码语言:javascript
复制
(classifier): Sequential(
  (0): Linear(in_features=25088, out_features=4096, bias=True)
  (1): ReLU(inplace=True)
  (2): Dropout(p=0.5, inplace=False)
  (3): Linear(in_features=4096, out_features=4096, bias=True)
)

然后提取特征:

代码语言:javascript
复制
>>> vgg16(torch.rand(1, 3, 124, 124)).shape
torch.Size([1, 4096])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69115300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档