接口定义:

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

参数解释:

  • stride:步长
  • zero-padding:图像四周填0
  • dilation:控制 kernel 点之间的空间距离,这个看着定义有点抽象,看下面的图就理解了
  • groups:分组卷积

Convolution 层的参数中有一个group参数,其意思是将对应的输入通道与输出通道数进行分组, 默认值为1, 也就是说默认输出输入的所有通道各为一组。
比如输入数据大小为90x100x100x32,通道数32,要经过一个3x3x48的卷积,group默认是1,就是全连接的卷积层。

如果group是2,那么对应要将输入的32个通道分成2个16的通道,将输出的48个通道分成2个24的通道。对输出的2个24的通道,第一个24通道与输入的第一个16通道进行全卷积,第二个24通道与输入的第二个16通道进行全卷积。

极端情况下,输入输出通道数相同,比如为24,group大小也为24,那么每个输出卷积核,只与输入的对应的通道进行卷积。

channel

在深度学习的算法学习中,都会提到 channels 这个概念。在一般的深度学习框架的 conv2d 中,如 tensorflow 、mxnet ,channels 都是必填的一个参数。

channels 该如何理解?

一般的RGB图片,channels 数量是 3 (红、绿、蓝);而monochrome图片,channels 数量是 1

一般 channels 的含义是**,每个卷积层中卷积核的数量。**
为什么这么说呢,看下面的例子:

如下图,假设现有一个为 6×6×3的图片样本,使用 3×3×3 的卷积核(filter)进行卷积操作。此时输入图片的 channels 为 3 ,而卷积核中的 in_channels 与 需要进行卷积操作的数据的 channels 一致(这里就是图片样本,为3)。

接下来,进行卷积操作,卷积核中的27个数字与分别与样本对应相乘后,再进行求和,得到第一个结果。依次进行,最终得到 4×4 的结果。

上面步骤完成后,由于只有一个卷积核,所以最终得到的结果为 4×4×1, out_channels 为 1 。

在实际应用中,都会使用多个卷积核。这里如果再加一个卷积核,就会得到 4×4×2的结果。

总结一下,我偏好把上面提到的 channels 分为三种:

  1. 最初输入的图片样本的 channels ,取决于图片类型,比如RGB;
  2. 卷积操作完成后输出的 out_channels ,取决于卷积核的数量。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels;
  3. 卷积核中的 in_channels ,刚刚2中已经说了,就是上一次卷积的 out_channels ,如果是第一次做卷积,就是1中样本图片的 channels 。

说到这里,相信已经把 channels 讲的很清楚了。在CNN中,想搞清楚每一层的传递关系,主要就是 height,width 的变化情况,和 channels 的变化情况。

Pytorch中Conv2d的使用相关推荐

  1. Tensorflow 1.x 和 Pytorch 中 Conv2d Padding的区别

    Tensorflow 和 Pytorch 中 Conv2d Padding的区别 Pytorch中Conv2d的Padding 可以是整数,二元组,字符串三种形式. 整数(int).如果输入的padd ...

  2. PyTorch中的nn.Conv1d与nn.Conv2d

    本文主要介绍PyTorch中的nn.Conv1d和nn.Conv2d方法,并给出相应代码示例,加深理解. 一维卷积nn.Conv1d 一般来说,一维卷积nn.Conv1d用于文本数据,只对宽度进行卷积 ...

  3. Pytorch中的Conv1d()和Conv2d()函数

    文章目录 一.Pytorch中的Conv1d()函数 二.Pytorch中的Conv2d()函数 三.Pytorch中的MaxPool1d()函数 四.pytorch中的MaxPool2d()函数 参 ...

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

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

  5. Pytorch中dilation(Conv2d)参数详解

    目录 一.Conv2d 二.Conv2d中的dilation参数 一.Conv2d 首先我们看一下Pytorch中的Conv2d的对应函数(Tensor通道排列顺序是:[batch, channel, ...

  6. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

    作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...

  7. 实践教程 | 浅谈 PyTorch 中的 tensor 及使用

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | xiaopl@知乎(已授权) 来源 | https://z ...

  8. 详解PyTorch中的ModuleList和Sequential

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨小占同学@知乎(已授权) 来源丨https://zhuanla ...

  9. Lesson 16.5 在Pytorch中实现卷积网络(上):卷积核、输入通道与特征图在PyTorch中实现卷积网络(中):步长与填充

    卷积神经网络是使用卷积层的一组神经网络.在一个成熟的CNN中,往往会涉及到卷积层.池化层.线性层(全连接层)以及各类激活函数.因此,在构筑卷积网络时,需从整体全部层的需求来进行考虑. 1 二维卷积层n ...

  10. tensor torch 构造_详解Pytorch中的网络构造

    背景 在PyTroch框架中,如果要自定义一个Net(网络,或者model,在本文中,model和Net拥有同样的意思),通常需要继承自nn.Module然后实现自己的layer.比如,在下面的示例中 ...

最新文章

  1. super(Student,self).__init__()初始化的是什么东西?
  2. php 5.3 wamp,wamp php 5.3.0 升级5.3.3
  3. 麻省理工正式宣布人工智能独立设系!人工智能与电子工程、计算机科学系将三分天下...
  4. (Excel)常用函数公式及操作技巧之四:文本与页面设置(二)
  5. 为什么Go没有三元运算符
  6. 王之泰201771010131《面向对象程序设计(java)》第九周学习总结
  7. docker安装rocketmq你学会了吗
  8. android8 老手机,华为多款老旧手机获升安卓8.0,流畅度飙升!
  9. linux svn with ad,svn+apache+AD域
  10. 如果你想专升本那就一定要看的文学常识完整版(三)
  11. putty怎么更改为中文_putty中文显示乱码解决方法
  12. Spring Boot 自定义注解实现AOP切面织入
  13. Ubuntu临时修改ip地址
  14. java实现png转ico,支持尺寸选择
  15. 子寅:不会“怼”产品经理,干不了程序员,更干不好脱口秀
  16. 什么是RAID?RAID有什么用?RAID原理
  17. Google中国产品不断升级改进 继续招聘优秀人才
  18. 基于2D-3D直线对应关系的单目摄像机定位
  19. Pytorch中KL loss
  20. 完美解决丨1. **`SyntaxError: invalid syntax`**

热门文章

  1. echarts 柱形图数据位置显示
  2. QCOM和其他常见芯片平台术语缩写
  3. Detours内联HOOK
  4. 转载 Linux新人科普
  5. 学习笔记 --- DM9000网卡原理与基地址设置
  6. img pdf 展示_vue中如何实现pdf文件预览的方法
  7. matlab打开jpg文件怎么打开,Matlab读取图片、显示和保存图像的详细教程
  8. 广州坐标系转换大地2000_如何将百度坐标转换为国家2000坐标系?
  9. unity3d 双人巡逻兵网络游戏
  10. 三菱a系列motion软体_三菱各类伺服电机标准参数一览表