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刷投票的脚本实现代码
Nov 08 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
python实现文件的备份流程详解
Jun 18 Python
python 连续不等式语法糖实例
Apr 15 Python
django数据模型中null和blank的区别说明
Sep 02 Python
python语言实现贪吃蛇游戏
Nov 13 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抽奖小程序的实现代码
2013/06/18 PHP
php数组合并的二种方法
2014/03/21 PHP
PHP查询快递信息的方法
2015/03/07 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
简单谈谈关于 npm 5.0 的新坑
2017/06/08 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
深入理解Vue nextTick 机制
2018/04/28 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
js实现简单的倒计时
2021/01/28 Javascript
Django实现组合搜索的方法示例
2018/01/23 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
Python3数字求和的实例
2019/02/19 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
心理健康教育心得体会
2013/12/29 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
工作会议主持词
2014/03/17 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
捐助倡议书范文
2014/04/15 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫