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内置函数的用法实例教程
Sep 08 Python
python脚本内运行linux命令的方法
Jul 02 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
Mar 24 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
Python3.5多进程原理与用法实例分析
Apr 05 Python
如何使用Python标准库进行性能测试
Jun 25 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
Pytorch中的数据集划分&正则化方法
May 27 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批量上传图片的具体实现方法介绍.
2014/02/26 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
YII框架关联查询操作示例
2019/04/29 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
十条建议帮你提高Python编程效率
2016/02/16 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
Python的标准模块包json详解
2017/03/13 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
python实现动态数组的示例代码
2019/07/15 Python
django迁移文件migrations的实现
2020/03/31 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
司机岗位职责范本
2015/04/10 职场文书
红歌会主持词
2015/07/02 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle