定义一个特征提取的类:

参考pytorch论坛:How to extract features of an image from a trained model

from torchvision.models import resnet18
import torch.nn as nn
myresnet=resnet18(pretrained=True)
print (myresnet) class FeatureExtractor(nn.Module):
def __init__(self, submodule, extracted_layers):
super(FeatureExtractor, self).__init__()
self.submodule = submodule
self.extracted_layers = extracted_layers def forward(self, x):
outputs = []
for name, module in self.submodule._modules.items():
if name is "fc": x = x.view(x.size(0), -1)
x = module(x) # last layer output put into current layer input
print(name)
if name in self.extracted_layers:
outputs.append(x)
return outputs exact_list=["conv1","layer1","avgpool"]
myexactor=FeatureExtractor(myresnet,exact_list).cuda() x = Variable(torch.rand(5, 3, 224, 224), requires_grad=True).cuda() y=myexactor(x) # 5x64x112x112 5x64x56x56 5x512x1x1
print (myexactor) print(type(y))
print(type(y[0]))
for i in range(len(y)):
print y[i].data.cpu().numpy().size
print y[i].data.cpu().numpy().shape # <type 'list'>
# <class 'torch.autograd.variable.Variable'>
#
# (5, 64, 112, 112)
#
# (5, 64, 56, 56)
#
# (5, 512, 1, 1)
#特征输出可视化
import matplotlib.pyplot as plt
for i in range(64):
ax = plt.subplot(8, 8, i + 1)
ax.set_title('Sample #{}'.format(i))
ax.axis('off')
plt.imshow(x[0].data.numpy()[0,i,:,:],cmap='jet')
plt.show()

Pytoch 抽取中间层特征方法的更多相关文章

  1. java 虹软ArcFace 2.0,java SDK使用、人脸识别-抽取人脸特征并做比对

    java人脸识别 虹软ArcFace 2.0,java SDK使用.人脸识别-抽取人脸特征并做比对 虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.ht ...

  2. Dao层抽取BaseDao公共方法

    设计IBseDao接口,定义公共的CRUD方法. // IBaseDao 接口,定义公共的CRUD方法 public interface IBaseDao<T> { public void ...

  3. 一种SpaceClaim抽取流道的方法——利用缺失的面功能

    针对不干净的几何,内部存在诸多碎面小缝隙,采用此方法可能会有较好的效果,不过需要耐心. 测试几何需要SpaceClaim19.0以上软件可以打开,下载链接: https://pan.baidu.com ...

  4. caffe-----使用C++ 提取网络中间层特征数据

    最近实验,想要在c++下知道网络中间某一层的特征数据情况,查找了相关资料,记录一下. 其实在caffe框架里面是包含这种操作的,可以模仿tools/extract_features.cpp中的操作来得 ...

  5. Vue 使用mixin抽取共通方法

    引入原因: 当一段逻辑在不同的地方使用时 step-1: 定义mixin文件,methods里有一个handleToLink方法 /** * this mixin file will be used ...

  6. 一个模块对应一个Servlet对应一张表 BaseServlet抽取反射进行方法转发实现

  7. 学习笔记CB003:分块、标记、关系抽取、文法特征结构

    分块,根据句子的词和词性,按照规则组织合分块,分块代表实体.常见实体,组织.人员.地点.日期.时间.名词短语分块(NP-chunking),通过词性标记.规则识别,通过机器学习方法识别.介词短语(PP ...

  8. .net环境下从PDF文档中抽取Text文本的一些方法汇总

    1.PDFBox的IKVM版本:据我所知,目前只有PDFBox的IKVM版本能比较好地从PDF中提取文本,PDFBOX更多信息请访问http://www.pdbox.org,关于其应用实例,可以参考C ...

  9. hibernate学习笔记4---HQL、通用方法的抽取实现

    一.通用方法的抽取实现 由于hibernate中对增删改查的一切操作都是面向对象的,所以将增删改查抽取成通用方法,以满足不同的表的增删改查操作,简化jdbc代码. 具体例子如下: package cn ...

随机推荐

  1. 论 ArrayList如何实现线程安全

    一:使用synchronized关键字 二:使用Collections.synchronizedList(); 假如你创建的代码如下:List<Map<String,Object>& ...

  2. poj3349(hash table)

    做的第一道哈希表的题目.速度很慢,跑了3000+ms.采用六条边的和对一个大质数的余数作为哈希表的key,理论上质数取得越大,消耗的空间就越大,但是速度会加快,这里取了14997.地址冲突用链表解决. ...

  3. Linux系统内存管理

    <linux 内存管理模型> 下面这个图将Linux内存管理基本上描述完了,但是显得有点复杂,接下来一部分一部分的解析. 内存管理系统可以分为两部分,分别是内核空间内存管理和用户空间内存管 ...

  4. SQLSERVER2014集群实战——IP引发的坑

    在之前的帖子里有提到过,为了避免IP变更带来的一系列问题,采取了不改变IP的策略.原以为,只要SQLSERVER的群集IP保持与之前单机部署的IP一致,就基本上不会有问题.然而实际永远比预想的更复杂. ...

  5. [BZOJ4881][Lydsy1705月赛]线段游戏

    首先冷静一下看清问题的本质,是将整个数列分成两个递增子序列. 那么由Dilworth定理得,无解当且仅当数列的最长下降子序列的长度>2,先特判掉. 然后就有一些比较厉害的做法:http://ww ...

  6. 第一章--Go与web应用

    Go语言构建web应用的特性 可扩展 可维护 模块化 高性能 HTTP简介 HTTP是一种无状态.由文本构成的请求-响应(request-response)协议,这种协议使用的是客户端-服务器(cli ...

  7. vijos p1876 bfs+map

    题意: Xiaodao是一位喜欢参加ACM比赛的孩子. 所谓ACM比赛, 是一种团队比赛. 每一次比赛, 每队需要由恰好三位选手组成. 现在, Xiaodao希望组建一支新的队伍, 在这之前, 他需要 ...

  8. 批量导入--EasyPOIPOI

    easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言( ...

  9. CF980E The Number Games【树链剖分/线段树】

    CF980E The Number Games 题意翻译 Panel 国将举办名为数字游戏的年度表演.每个省派出一名选手. 国家有 n 个编号从 1 到 n 的省,每个省刚好有一条路径将其与其他省相连 ...

  10. BZOJ 3876: [Ahoi2014]支线剧情 带下界的费用流

    3876: [Ahoi2014]支线剧情 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3876 Description [故事背景] 宅 ...