Pytorch 抽取vgg各层并进行定制化处理的方法


Posted in Python onAugust 20, 2019

工作中有时候需要对vgg进行定制化处理,比如有些时候需要借助于vgg的层结构,但是需要使用的是2 channels输入,等等需求,这时候可以使用vgg的原始结构用class重写一遍,但是这样的方式比较慢,并且容易出错,下面给出一种比较简单的方式

def define_vgg(vgg,input_channels,endlayer,use_maxpool=False): 
  vgg_ad = copy.deepcopy(vgg)
  model = nn.Sequential()
  i = 0
  for layer in list(vgg_ad.features):
    if i > endlayer:
      break
    if isinstance(layer, nn.Conv2d) and i is 0:
      name = "conv_" + str(i)
      layer = nn.Conv2d(input_channels,
               layer.out_channels,
               layer.kernel_size,
               stride = layer.stride,
               padding=layer.padding)
      model.add_module(name, layer)
    if isinstance(layer, nn.Conv2d):
      name = "conv_" + str(i)
      model.add_module(name, layer)
 
    if isinstance(layer, nn.ReLU):
      name = "leakyrelu_" + str(i)
      layer = nn.LeakyReLU(inplace=True) 
      model.add_module(name, layer)
 
    if isinstance(layer, nn.MaxPool2d):
      name = "pool_" + str(i)
      if use_maxpool:
        model.add_module(name, layer)
      else:
        avgpool = nn.AvgPool2d(kernel_size=layer.kernel_size, stride=layer.stride, padding=layer.padding)
        model.add_module(name, avgpool)
    i += 1
  return model

函数输入项中的vgg 是直接使用的import torchvision.models.vgg16 传入的是vgg16 非预训练版本。end_layer 是需要提取的层数,这里使用了vgg.features 是指仅仅在vgg.features 上进行层的提取;也可以根据定制在classifier上进行提取。

下面是我的一个提取前7层的示例,可以使用pyCharm evaluate 上面函数返回的model,可以看到这个示例的情况,这里我的定制条件是输入通道为2 ,需要提取前7层,并且将ReLu更换为LeakyRelu。

Sequential(
 (conv_0): Conv2d(2, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
 (leakyrelu_1): LeakyReLU(negative_slope=0.01, inplace)
 (conv_2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
 (leakyrelu_3): LeakyReLU(negative_slope=0.01, inplace)
 (pool_4): AvgPool2d(kernel_size=2, stride=2, padding=0)
 (conv_5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
 (leakyrelu_6): LeakyReLU(negative_slope=0.01, inplace)
 (conv_7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)

以上这篇Pytorch 抽取vgg各层并进行定制化处理的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python刷投票的脚本实现代码
Nov 08 Python
在Apache服务器上同时运行多个Django程序的方法
Jul 22 Python
Python字符串处理实例详解
May 18 Python
python处理Excel xlrd的简单使用
Sep 12 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
Django Rest framework三种分页方式详解
Jul 26 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Python学习笔记之装饰器
Aug 06 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
python实现抠图给证件照换背景源码
Aug 20 #Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 #Python
pytorch 在sequential中使用view来reshape的例子
Aug 20 #Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 #Python
python实现证件照换底功能
Aug 20 #Python
pytorch多进程加速及代码优化方法
Aug 19 #Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 #Python
You might like
php eval函数用法总结
2012/10/31 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
JavaScript中常用的运算符小结
2012/01/18 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
JQuery常见节点操作实例分析
2019/05/15 jQuery
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Python selenium文件上传方法汇总
2020/11/19 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
PyQt5实现画布小程序
2020/05/30 Python
python os模块在系统管理中的应用
2020/06/22 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
Python爬虫新手入门之初学lxml库
2020/12/20 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
应届大学生求职信
2013/12/01 职场文书
某某同志考察材料
2014/05/28 职场文书
行政申诉状范文
2015/05/20 职场文书
二十年同学聚会感言
2015/07/30 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL