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通过90行代码搭建一个音乐搜索工具
Jul 29 Python
详解在Python程序中自定义异常的方法
Oct 16 Python
Python3 max()函数基础用法
Feb 19 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
python实现超市商品销售管理系统
Oct 25 Python
Python 实现自动登录+点击+滑动验证功能
Jun 10 Python
Python将字典转换为XML的方法
Aug 01 Python
Python pip使用超时问题解决方案
Aug 03 Python
Python ellipsis 的用法详解
Nov 20 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 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约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
python实现发送邮件功能
2017/07/22 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
关于打架的检讨书
2014/01/17 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
《观舞记》教学反思
2014/04/16 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
办理信用卡工作证明
2014/09/30 职场文书
社区活动总结范文
2015/05/07 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
Go语言怎么使用变长参数函数
2022/07/15 Golang
Windows7下FTP搭建图文教程
2022/08/05 Servers