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生成器(Generator)详解
Apr 13 Python
python结合shell查询google关键词排名的实现代码
Feb 27 Python
Python查询IP地址归属完整代码
Jun 21 Python
想学python 这5本书籍你必看!
Dec 11 Python
python 执行文件时额外参数获取的实例
Dec 18 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
Jun 04 Python
python的range和linspace使用详解
Nov 27 Python
基于pandas中expand的作用详解
Dec 17 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 Python
Python 实现定积分与二重定积分的操作
May 26 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
缅甸的咖啡简史
2021/03/04 咖啡文化
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
一个程序下载的管理程序(三)
2006/10/09 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
jquery 常用操作方法
2010/01/28 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
js如何编写简单的ajax方法库
2017/08/02 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
详解vue2.0模拟后台json数据
2019/05/16 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
python  Django中的apps.py的目的是什么
2018/10/15 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
Python字典dict常用方法函数实例
2020/11/09 Python
python中random模块详解
2021/03/01 Python
python实现控制台输出颜色
2021/03/02 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
捐献物资倡议书范文
2014/05/19 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
法院个人总结
2015/03/03 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
MySQL 时间类型的选择
2021/06/05 MySQL