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 26 Python
初学Python函数的笔记整理
Apr 07 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
学习python的前途 python挣钱
Feb 27 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python实现可变变量名方法详解
Jul 01 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
Feb 24 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
详解python变量与数据类型
Aug 25 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
php 归并排序 数组交集
2011/05/10 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
php实现的递归提成方案实例
2015/11/14 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
C#笔试题集合
2013/06/21 面试题
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
班会关于环保演讲稿
2013/12/29 职场文书
给客户的道歉信
2014/01/13 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
python套接字socket通信
2022/04/01 Python
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电
Go gorilla/sessions库安装使用
2022/08/14 Golang