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中的yield使用方法
Feb 11 Python
基于python编写的微博应用
Oct 17 Python
Python使用剪切板的方法
Jun 06 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
python实现图片筛选程序
Oct 24 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
python迭代器常见用法实例分析
Nov 22 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
Python使用sqlite3模块内置数据库
May 07 Python
基于python实现计算两组数据P值
Jul 10 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 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
8个PHP数组面试题
2015/06/23 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
python自动裁剪图像代码分享
2017/11/25 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
办公室文员工作自我评价
2013/12/01 职场文书
物业公司采购员岗位职责
2013/12/31 职场文书
党组织公开承诺书
2014/03/29 职场文书
生日寄语大全
2014/04/08 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
标准单位租车协议书
2014/09/23 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
模范班主任事迹材料
2014/12/17 职场文书
国际贸易实训总结
2015/08/03 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书