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标准库之随机数 (math包、random包)介绍
Nov 25 Python
详解Django中的过滤器
Jul 16 Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
python实现桌面托盘气泡提示
Jul 29 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
django项目中新增app的2种实现方法
Apr 01 Python
记录模型训练时loss值的变化情况
Jun 16 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
简单介绍Python的第三方库yaml
Jun 18 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中文件上传的一个问题
2010/09/04 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
深入理解Python装饰器
2016/07/27 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python远程连接MySQL数据库
2019/04/19 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
py-charm延长试用期限实例
2019/12/22 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
历史学专业个人的自我评价
2013/10/13 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
质检员工作总结2015
2015/04/25 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
Vue vee-validate插件的简单使用
2021/06/22 Vue.js