官网链接:

nn.Conv2d     Applies a 2D convolution over an input signal composed of several input planes.

nn.Conv2d是二维卷积方法,相对应的还有一维卷积方法nn.Conv1d,常用于文本数据的处理,而nn.Conv2d一般用于二维图像。

可以看到,在torch.nn下包含了我们模型的概念、一些常用层、损失函数等的定义。我们不一一详细说,只说我们刚开始操作时最经常用到的。今天我们从最常用的2维卷积层说起。

首先还是看官方文档对Conv2d的整体定义:

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

参数解释:

in_channels —— 输入的channels数

out_channels —— 输出的channels数

kernel_size ——卷积核的尺寸,可以是方形卷积核、也可以不是,下边example可以看到

stride —— 步长,用来控制卷积核移动间隔

padding ——输入边沿扩边操作

padding_mode ——扩边的方式

bias ——是否使用偏置(即out = wx+b中的b)

以上参数,均是大家了解相对较多的参数项目。

dilation:控制 kernel 点之间的空间距离, 这个参数简单说,设定了取数之间的间隔,下图可表达其意思

dilation = 0

dilation = 1

上图中蓝色为选取进行卷积计算的值。通过对比,即可了解该选项的作用

groups —— 进行分组卷积的组数

这个参数的使用不太好理解,首先还是贴原文档的说明

这个其实是将输入和输出进行分组,然后进行对应的映射,最后连接形成输出。引网络上的一张图,大概可以看出此参数的作用。引至:

pytorch group 分组卷积

参数的输入数据格式如下:

以上对参数进行了较为详尽的说明,基本上可以使用了!

官方给出了几个例子

1)方形卷积核、行列相同步长(With square kernels and equal stride

= nn.Conv2d(16, 33, 3, stride=2)

2)非方形卷积核、行列采用不同步长,并进行扩边

= nn.Conv2d(16, 33, (3, 5), stride=(2, 1), padding=(4, 2))

3)非方形卷积核、行列采用不同步长、数据采用稀疏,并进行扩边

= nn.Conv2d(16, 33, (3, 5), stride=(2, 1), padding=(4, 2), dilation=(3, 1))

通过以上例子,可知使用Conv2d的使用。

最后,我们看下Conv2d的源码,通过底层看出其实现:

该类的源码定义中,我们可以看到其中定义了3个函数:__init__forward和conv2d_forward。__init__中可以看到,对相关参数进行了默认初始化;而在forward中,表明了这个底层实现函数是采用的nn.functional.conv2d来实现。

以上,就对该类的使用进行了一次梳理,希望大家使用起来更加顺畅!

【备注】

由于也是刚转战pytorch,有错误的地方,望各位大佬指正。也希望有兴趣一起学习的朋友一起加入进来

代码例子:

>>> # With square kernels and equal stride
>>> m = nn.Conv2d(16, 33, 3, stride=2)
>>> # non-square kernels and unequal stride and with padding
>>> m = nn.Conv2d(16, 33, (3, 5), stride=(2, 1), padding=(4, 2))
>>> # non-square kernels and unequal stride and with padding and dilation
>>> m = nn.Conv2d(16, 33, (3, 5), stride=(2, 1), padding=(4, 2), dilation=(3, 1))
>>> input = torch.randn(20, 16, 50, 100)
>>> output = m(input)

Pytorch中nn.Conv2d的用法相关推荐

  1. Pytorch中nn.Conv2d数据计算模拟

    Pytorch中nn.Conv2d数据计算模拟 最近在研究dgcnn网络的源码,其网络架构部分使用的是nn.Conv2d模块.在Pytorch的官方文档中,nn.Conv2d的输入数据为(B, Cin ...

  2. PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法

    原文链接 1. 通道数问题 : 描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道.如果有RGB三种颜色来描述它,就是三通道.最初输入的图片样本的 channels ,取决于图片类型: ...

  3. 图解 Pytorch 中 nn.Conv2d 的 groups 参数

    文章目录 普通卷积复习 Groups是如何改变卷积方式的 实验验证 参考资料 普通卷积复习 首先我们先来简单复习一下普通的卷积行为. 从上图可以看到,输入特征图为3,经过4个filter卷积后生成了4 ...

  4. Pytorch中nn.Conv2d的dilation

    dilation原文解释如下: controls the spacing between the kernel points; also known as the à trous algorithm. ...

  5. pytorch中nn.Conv2d卷积的padding的取值问题

    明确卷积的计算公式:d = (d - kennel_size + 2 * padding) / stride + 1 保证输入输出的分辨率大小一致,padding的取值:如果kernal_size = ...

  6. Pytorch的nn.Conv2d()详解

    Pytorch的nn.Conv2d()详解 nn.Conv2d()的使用.形参与隐藏的权重参数 in_channels out_channels kernel_size stride = 1 padd ...

  7. PyTorch中nn.Module类中__call__方法介绍

    在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[-, Any] = ...

  8. Pytorch中的collate_fn函数用法

    Pytorch中的collate_fn函数用法 官方的解释:   Puts each data field into a tensor with outer dimension batch size ...

  9. 对于pytorch中nn.CrossEntropyLoss()与nn.BCELoss()的理解和使用

    在pytorch中nn.CrossEntropyLoss()为交叉熵损失函数,用于解决多分类问题,也可用于解决二分类问题. BCELoss是Binary CrossEntropyLoss的缩写,nn. ...

最新文章

  1. 人类基因组最后一块拼图完成!Science罕见6篇连发
  2. 小坑记录:get_cmap参数区分大小写
  3. Vue中去掉表单对象上前后空格
  4. 各行业2021薪酬报告来了,三大高薪行业令人羡慕
  5. 开源软件 安全风险_3开源安全风险及其解决方法
  6. 确定性有穷自动机(DFA算法) 非确定性有穷自动机(NFA算法)
  7. vscode编写go没有代码提示
  8. 华为nova5iotg功能使用_原来华为EMUI10输入法这么强大!使用这个功能,一分钟能打300字...
  9. html 高度塌陷,CSS之高度塌陷问题解决方案
  10. Qt视频直播软件--项目实战(Day5)
  11. C语言中钩子函数使用讲解
  12. 打开计算机窗口的控制菜单,打开控制面板的几种方法
  13. python-将csv转txt
  14. 数据库学习之num1
  15. PPC活动的优化利用Prosper202
  16. C++ gcc编译器加速优化
  17. python如何获取星期几
  18. Python创建自己的聊天机器人
  19. 用python画皮卡丘的代码-利用Python绘制萌萌哒的皮卡丘
  20. Quartz组件介绍

热门文章

  1. 11 个 Git 面试题
  2. [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射
  3. 160309_Qt Essentials
  4. 性能测试之Jmeter 中 CSV 如何参数化测试数据并实现自动断言
  5. 常用的Oracle命令整理
  6. map、set和unordered_map、unordered_set对比
  7. python中isinstance是什么意思_isinstance在python中的意思是什么?
  8. 计算机重启是什么原因,电脑自动重启是什么原因
  9. 取枚举的参数c语言,求解:如何获得enum类型中枚举值的数量
  10. 实现一个基于Vue的Button小组件