pytorch 自定义卷积核进行卷积操作方式


Posted in Python onDecember 30, 2019

一 卷积操作:在pytorch搭建起网络时,大家通常都使用已有的框架进行训练,在网络中使用最多就是卷积操作,最熟悉不过的就是

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

通过上面的输入发现想自定义自己的卷积核,比如高斯核,发现是行不通的,因为上面的参数里面只有卷积核尺寸,而权值weight是通过梯度一直更新的,是不确定的。

二 需要自己定义卷积核的目的:目前是需要通过一个VGG网络提取特征特后需要对其进行高斯卷积,卷积后再继续输入到网络中训练。

三 解决方案。使用

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)

pytorch 自定义卷积核进行卷积操作方式

这里注意下weight的参数。与nn.Conv2d的参数不一样

可以发现F.conv2d可以直接输入卷积的权值weight,也就是卷积核。那么接下来就要首先生成一个高斯权重了。这里不直接一步步写了,直接输入就行。

kernel = [[0.03797616, 0.044863533, 0.03797616],
     [0.044863533, 0.053, 0.044863533],
     [0.03797616, 0.044863533, 0.03797616]]

四 完整代码

class GaussianBlur(nn.Module):
  def __init__(self):
    super(GaussianBlur, self).__init__()
    kernel = [[0.03797616, 0.044863533, 0.03797616],
         [0.044863533, 0.053, 0.044863533],
         [0.03797616, 0.044863533, 0.03797616]]
    kernel = torch.FloatTensor(kernel).unsqueeze(0).unsqueeze(0)
    self.weight = nn.Parameter(data=kernel, requires_grad=False)
 
  def forward(self, x):
    x1 = x[:, 0]
    x2 = x[:, 1]
    x3 = x[:, 2]
    x1 = F.conv2d(x1.unsqueeze(1), self.weight, padding=2)
    x2 = F.conv2d(x2.unsqueeze(1), self.weight, padding=2)
    x3 = F.conv2d(x3.unsqueeze(1), self.weight, padding=2)
    x = torch.cat([x1, x2, x3], dim=1)
    return x

这里为了网络模型需要写成了一个类,这里假设输入的x也就是经过网络提取后的三通道特征图(当然不一定是三通道可以是任意通道)

如果是任意通道的话,使用torch.expand()向输入的维度前面进行扩充。如下:

def blur(self, tensor_image):
    kernel = [[0.03797616, 0.044863533, 0.03797616],
        [0.044863533, 0.053, 0.044863533],
        [0.03797616, 0.044863533, 0.03797616]]
    
    min_batch=tensor_image.size()[0]
    channels=tensor_image.size()[1]
    out_channel=channels
    kernel = torch.FloatTensor(kernel).expand(out_channel,channels,3,3)
    self.weight = nn.Parameter(data=kernel, requires_grad=False)
 
    return F.conv2d(tensor_image,self.weight,1,1)

以上这篇pytorch 自定义卷积核进行卷积操作方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中subprocess模块用法实例详解
May 20 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
Python 函数基础知识汇总
Mar 09 Python
利用nohup来开启python文件的方法
Jan 14 Python
python opencv判断图像是否为空的实例
Jan 26 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
在python里面运用多继承方法详解
Jul 01 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
利用python爬取有道词典的方法
Dec 08 Python
Python之字符串的遍历的4种方式
Dec 08 Python
python编程项目中线上问题排查与解决
Nov 01 Python
PyTorch中反卷积的用法详解
Dec 30 #Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 #Python
Pytorch实现各种2d卷积示例
Dec 30 #Python
Python面向对象之多态原理与用法案例分析
Dec 30 #Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 #Python
python面向对象之类属性和类方法案例分析
Dec 30 #Python
基于Python执行dos命令并获取输出的结果
Dec 30 #Python
You might like
php在字符串中查找另一个字符串
2008/11/19 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
Javascript - HTML的request类
2007/01/09 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
JavaScript 异步调用
2017/10/25 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python输出指定月份日历的方法
2015/04/23 Python
Python二分查找详解
2015/09/13 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
python进行参数传递的方法
2020/05/12 Python
房地产财务管理制度
2014/02/02 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
课外活动实习计划
2015/01/19 职场文书
员工表扬信怎么写
2015/05/05 职场文书