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将字符串转换成数组的方法
Apr 29 Python
简单的python后台管理程序
Apr 13 Python
Python处理Excel文件实例代码
Jun 20 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
python实现根据指定字符截取对应的行的内容方法
Oct 23 Python
Python字符串对象实现原理详解
Jul 01 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
python生成特定分布数的实例
Dec 05 Python
如何基于python操作json文件获取内容
Dec 24 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
Python pip配置国内源的方法
Feb 14 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 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
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
优秀党员获奖感言
2014/02/18 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
薪资证明范本
2015/06/19 职场文书
老人与海读书笔记
2015/06/26 职场文书
《失物招领》教学反思
2016/02/20 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python