pytorch 可视化feature map的示例代码


Posted in Python onAugust 20, 2019

之前做的一些项目中涉及到feature map 可视化的问题,一个层中feature map的数量往往就是当前层out_channels的值,我们可以通过以下代码可视化自己网络中某层的feature map,个人感觉可视化feature map对调参还是很有用的。

不多说了,直接看代码:

import torch
from torch.autograd import Variable
import torch.nn as nn
import pickle

from sys import path
path.append('/residual model path')
import residual_model
from residual_model import Residual_Model

model = Residual_Model()
model.load_state_dict(torch.load('./model.pkl'))



class myNet(nn.Module):
  def __init__(self,pretrained_model,layers):
    super(myNet,self).__init__()
    self.net1 = nn.Sequential(*list(pretrained_model.children())[:layers[0]])
    self.net2 = nn.Sequential(*list(pretrained_model.children())[:layers[1]])
    self.net3 = nn.Sequential(*list(pretrained_model.children())[:layers[2]])

  def forward(self,x):
    out1 = self.net1(x)
    out2 = self.net(out1)
    out3 = self.net(out2)
    return out1,out2,out3

def get_features(pretrained_model, x, layers = [3, 4, 9]): ## get_features 其实很简单
'''
1.首先import model 
2.将weights load 进model
3.熟悉model的每一层的位置,提前知道要输出feature map的网络层是处于网络的那一层
4.直接将test_x输入网络,*list(model.chidren())是用来提取网络的每一层的结构的。net1 = nn.Sequential(*list(pretrained_model.children())[:layers[0]]) ,就是第三层前的所有层。

'''
  net1 = nn.Sequential(*list(pretrained_model.children())[:layers[0]]) 
#  print net1 
  out1 = net1(x) 

  net2 = nn.Sequential(*list(pretrained_model.children())[layers[0]:layers[1]]) 
#  print net2 
  out2 = net2(out1) 

  #net3 = nn.Sequential(*list(pretrained_model.children())[layers[1]:layers[2]]) 
  #out3 = net3(out2) 

  return out1, out2
with open('test.pickle','rb') as f:
  data = pickle.load(f)
x = data['test_mains'][0]
x = Variable(torch.from_numpy(x)).view(1,1,128,1) ## test_x必须为Varibable
#x = Variable(torch.randn(1,1,128,1))
if torch.cuda.is_available():
  x = x.cuda() # 如果模型的训练是用cuda加速的话,输入的变量也必须是cuda加速的,两个必须是对应的,网络的参数weight都是用cuda加速的,不然会报错
  model = model.cuda()
output1,output2 = get_features(model,x)## model是训练好的model,前面已经import 进来了Residual model
print('output1.shape:',output1.shape)
print('output2.shape:',output2.shape)
#print('output3.shape:',output3.shape)
output_1 = torch.squeeze(output2,dim = 0)
output_1_arr = output_1.data.cpu().numpy() # 得到的cuda加速的输出不能直接转变成numpy格式的,当时根据报错的信息首先将变量转换为cpu的,然后转换为numpy的格式
output_1_arr = output_1_arr.reshape([output_1_arr.shape[0],output_1_arr.shape[1]])

以上这篇pytorch 可视化feature map的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的lambda匿名函数的简单介绍
Apr 25 Python
python算法学习之桶排序算法实例(分块排序)
Dec 18 Python
Fabric 应用案例
Aug 28 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
Python使用numpy实现BP神经网络
Mar 10 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
基于python生成英文版词云图代码实例
May 16 Python
Django Path转换器自定义及正则代码实例
May 29 Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
pandas统计重复值次数的方法实现
Feb 20 Python
Python中的pprint模块
Nov 27 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 #Python
python爬虫 urllib模块url编码处理详解
Aug 20 #Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 #Python
python web框架 django wsgi原理解析
Aug 20 #Python
opencv转换颜色空间更改图片背景
Aug 20 #Python
pytorch 预训练层的使用方法
Aug 20 #Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 #Python
You might like
php生成文件
2007/01/15 PHP
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
javascript内存管理详细解析
2013/11/11 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
浅析Python四种数据类型
2018/09/26 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
新闻编辑自荐信
2013/11/03 职场文书
大学生怎样进行自我评价
2013/12/07 职场文书
护士毕业生自荐信
2014/02/07 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
中专毕业生个人职业生涯规划
2014/02/19 职场文书
个人委托书怎么写
2014/04/04 职场文书
2019年最新借条范本!
2019/07/08 职场文书
JavaScript数组 几个常用方法总结
2021/11/11 Javascript