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的Flask框架与数据库连接的教程
Apr 20 Python
Python爬取网易云音乐热门评论
Mar 31 Python
Python 多进程和数据传递的理解
Oct 09 Python
Python3基于sax解析xml操作示例
May 22 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
python scrapy爬虫代码及填坑
Aug 12 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
pytorch 一行代码查看网络参数总量的实现
May 12 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
微信小程序调用python模型
Apr 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实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
php技巧小结【推荐】
2017/01/19 PHP
一段实时更新的时间代码
2006/07/07 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
python基础教程之缩进介绍
2014/08/29 Python
Python中正则表达式的详细教程
2015/04/30 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
python 读取修改pcap包的例子
2019/07/23 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
中间件的定义
2016/08/09 面试题
行政专员工作职责
2013/12/22 职场文书
文明学生事迹材料
2014/01/29 职场文书
八一慰问活动方案
2014/02/07 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
先进个人总结范文
2015/02/15 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
Golang数据类型和相互转换
2022/04/12 Golang
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL