pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法


Posted in Python onAugust 17, 2019

如下所示:

#获取模型权重
for k, v in model_2.state_dict().iteritems():
 print("Layer {}".format(k))
 print(v)
#获取模型权重
for layer in model_2.modules():
 if isinstance(layer, nn.Linear):
  print(layer.weight)
#将一个模型权重载入另一个模型
model = VGG(make_layers(cfg['E']), **kwargs)
if pretrained:
 load = torch.load('/home/huangqk/.torch/models/vgg19-dcbb9e9d.pth')
 load_state = {k: v for k, v in load.items() if k not in ['classifier.0.weight', 'classifier.0.bias', 'classifier.3.weight', 'classifier.3.bias', 'classifier.6.weight', 'classifier.6.bias']}
 model_state = model.state_dict()
 model_state.update(load_state)
 model.load_state_dict(model_state)
return model
# 对特定层注入hook
def hook_layers(model):
 def hook_function(module, inputs, outputs):
  recreate_image(inputs[0])

 print(model.features._modules)
 first_layer = list(model.features._modules.items())[0][1]
 first_layer.register_forward_hook(hook_function)
#获取层
x = someinput
for l in vgg.features.modules():
 x = l(x)
modulelist = list(vgg.features.modules())
for l in modulelist[:5]:
 x = l(x)
keep = x
for l in modulelist[5:]:
 x = l(x)
# 提取vgg模型的中间层输出
# coding:utf8
import torch
import torch.nn as nn
from torchvision.models import vgg16
from collections import namedtuple


class Vgg16(torch.nn.Module):
 def __init__(self):
  super(Vgg16, self).__init__()
  features = list(vgg16(pretrained=True).features)[:23]
  # features的第3,8,15,22层分别是: relu1_2,relu2_2,relu3_3,relu4_3
  self.features = nn.ModuleList(features).eval()

 def forward(self, x):
  results = []
  for ii, model in enumerate(self.features):
   x = model(x)
   if ii in {3, 8, 15, 22}:
    results.append(x)

  vgg_outputs = namedtuple("VggOutputs", ['relu1_2', 'relu2_2', 'relu3_3', 'relu4_3'])
  return vgg_outputs(*results)

以上这篇pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Opencv将图片转为字符画
Feb 19 Python
PyQt5实现下载进度条效果
Apr 19 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
pybind11和numpy进行交互的方法
Jul 04 Python
利用python实现逐步回归
Feb 24 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
详解Python中openpyxl模块基本用法
Feb 23 Python
关于PyTorch源码解读之torchvision.models
Aug 17 #Python
django项目用higcharts统计最近七天文章点击量
Aug 17 #Python
Django对models里的objects的使用详解
Aug 17 #Python
python3.6中@property装饰器的使用方法示例
Aug 17 #Python
对django的User模型和四种扩展/重写方法小结
Aug 17 #Python
python3.6编写的单元测试示例
Aug 17 #Python
python3 实现的对象与json相互转换操作示例
Aug 17 #Python
You might like
图书管理程序(二)
2006/10/09 PHP
中篇:安装及配置PHP
2006/12/13 PHP
php模板函数 正则实现代码
2012/10/15 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
PHP基础知识介绍
2013/09/17 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
js实现烟花特效
2020/03/02 Javascript
js实现电灯开关效果
2021/01/19 Javascript
js实现碰撞检测
2021/01/29 Javascript
Python封装shell命令实例分析
2015/05/05 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
使用Python对SQLite数据库操作
2017/04/06 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
Django Rest framework权限的详细用法
2019/07/25 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
老师推荐信
2013/10/28 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers