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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
python解析html开发库pyquery使用方法
Feb 07 Python
python求斐波那契数列示例分享
Feb 14 Python
Python装饰器的函数式编程详解
Feb 27 Python
基于python实现微信模板消息
Dec 21 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
Python Numpy计算各类距离的方法
Jul 05 Python
python如何求100以内的素数
May 27 Python
python 19个值得学习的编程技巧
Aug 15 Python
Python xlwings插入Excel图片的实现方法
Feb 26 Python
python中urllib包的网络请求教程
Apr 19 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
php 数组的指针操作实现代码
2011/02/08 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP 图片水印类代码
2012/08/27 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
开始着手第一个Django项目
2015/07/15 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
如何运行带参数的python脚本
2019/11/15 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
python-地图可视化组件folium的操作
2020/12/14 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
美国批发供应商:Kole Imports
2019/04/10 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
学会感恩主题班会
2015/08/12 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript