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之dict()的操作方法
Sep 24 Python
python文件读写操作与linux shell变量命令交互执行的方法
Jan 14 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
Apache如何部署django项目
May 21 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
Python 识别12306图片验证码物品的实现示例
Jan 20 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 Python
Django模型验证器介绍与源码分析
Sep 08 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 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/08/21 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
python随机生成指定长度密码的方法
2015/04/04 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
学生党员公开承诺书
2014/05/28 职场文书
学校班班通实施方案
2014/06/11 职场文书
普通话宣传标语
2014/06/26 职场文书
出国导师推荐信
2015/03/25 职场文书
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL
使用refresh_token实现无感刷新页面
2022/04/26 Javascript
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS