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编写分析Python程序性能的工具的教程
Apr 01 Python
Python基于pygame实现图片代替鼠标移动效果
Nov 11 Python
python黑魔法之编码转换
Jan 25 Python
Python探索之自定义实现线程池
Oct 27 Python
python中ASCII码和字符的转换方法
Jul 09 Python
Python解决走迷宫问题算法示例
Jul 27 Python
python实现简易动态时钟
Nov 19 Python
Python从函数参数类型引出元组实例分析
May 28 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
Python常用外部指令执行代码实例
Nov 05 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
destoon二次开发入门示例
2014/06/20 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
python rsa 加密解密
2017/03/20 Python
python频繁写入文件时提速的方法
2019/06/26 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
python 下划线的不同用法
2020/10/24 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
关于爱情的广播稿
2014/01/16 职场文书
大学生村官承诺书
2014/03/28 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
建设工程授权委托书
2014/09/22 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
python 中的@运算符使用
2021/05/26 Python
Android Studio 计算器开发
2022/05/20 Java/Android