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下的XSLT API进行web开发的简单教程
Apr 15 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
PHP实现发送和接收JSON请求
Jun 07 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
基于python实现删除指定文件类型
Jul 21 Python
浅谈python中的多态
Jun 15 Python
关于python爬虫应用urllib库作用分析
Sep 04 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
PHP 强制下载文件代码
2010/10/24 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
jQuery操作cookie
2016/08/08 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
Python数据结构之翻转链表
2017/02/25 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Django内容增加富文本功能的实例
2017/10/17 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
校园报刊亭的创业计划书
2014/01/02 职场文书
写求职信有什么意义
2014/02/17 职场文书
信息技术毕业生自荐信范文
2014/03/13 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
工作会议简报
2015/07/20 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP
Redis的字符串是如何实现的
2021/10/24 Redis
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL