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读取Android permission文件
Nov 01 Python
Python isinstance函数介绍
Apr 14 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
Python批量更改文件名的实现方法
Oct 29 Python
Python编写Windows Service服务程序
Jan 04 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
Apr 10 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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创建者模式
2014/11/25 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
企业管理专业个人求职信范文
2013/09/24 职场文书
优秀员工评语
2014/02/10 职场文书
运动会广播稿20字
2014/02/18 职场文书
开业庆典主持词
2014/03/21 职场文书
三字经教学反思
2014/04/26 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
2014年材料员工作总结
2014/11/19 职场文书
2014年法务工作总结
2014/12/11 职场文书
药店收银员岗位职责
2015/04/07 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
实现GO语言对数组切片去重
2022/04/20 Golang