您是否在使用Conv2d时遇见问题了呢?

您是否还在以Conv2d(128, 256, 3)的方式简单使用这个最具魅力的layer呢?

想更了解Conv2d么?让我们一起来深入看看它的真容吧,让我们触到它更高端的用法。

在第5节中,我们已经使用了Linear层来构建模型。其来自于torch.nn中

首先,我们先对torch.nn 来个整体的认识。官方链接:

https://pytorch.org/docs/stable/nn.html#

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

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

Conv2d,就是用来实现2d卷积操作的。要使用好这个类,我们先得搞清楚它的输入参数都是些啥?

in_channels —— 输入的channels数

out_channels —— 输出的channels数

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

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

padding ——输入边沿扩边操作

padding_mode ——扩边的方式

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

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

dilation —— 这个参数简单说,设定了取数之间的间隔,下图可表达其意思

dilation = 1

dilation = 2

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

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

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

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

pytorch group 分组卷积

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

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

官方给出了几个例子

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

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

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

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

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

m = 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,有错误的地方,望各位大佬指正。也希望有兴趣一起学习的朋友一起加入进来

conv2d函数_Pytorch 从0开始学(6)——Conv2d 详解相关推荐

  1. conv2d 公式_Pytorch 从0开始学(6)——Conv2d 详解

    您是否在使用Conv2d时遇见问题了呢? 您是否还在以Conv2d(128, 256, 3)的方式简单使用这个最具魅力的layer呢? 想更了解Conv2d么?让我们一起来深入看看它的真容吧,让我们触 ...

  2. 【小白学PyTorch】扩展之Tensorflow2.0 | 21 Keras的API详解(下)池化、Normalization

    <<小白学PyTorch>> 扩展之Tensorflow2.0 | 21 Keras的API详解(上)卷积.激活.初始化.正则 扩展之Tensorflow2.0 | 20 TF ...

  3. C++友元函数和友元类(C++ friend)详解

    在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...

  4. Android4.0源码目录结构详解

    Android4.0源码目录结构详解 Android4.0与2.1目录差不多 alsa这块,注意external/tinyalsa下有: include/tinyalsa/asoundlib.h mi ...

  5. Linux Kernel 6.0 CXL Core pci.c 详解

    文章目录 前言 相关链接 Ref 正文 前言 CXL 是一个比较新的技术,所以我研究的内核源码是选了当前比较新的内核版本 linux 6.0.打算将内核关于 CXL 的驱动进行解析一遍,一步一步慢慢来 ...

  6. Android 8.0学习(32)---Android 8.0源码目录结构详解

    Android 8.0源码目录结构详解 android的移植按如下流程:     (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来.     (2)正确挂载文件系统 ...

  7. Android 7.0 Audio的Resample过程详解

    Android 7.0 Audio的Resample过程详解 Qidi 2017.02.23 (Markdown & Haroopad) [前言] 处理过音频文件的工程师都知道音频数据存在采样 ...

  8. php根据元素返回可以,array_search()函数按元素值返回键名步骤详解

    这次给大家带来array_search()函数按元素值返回键名步骤详解,array_search()函数按元素值返回键名的注意事项有哪些,下面就是实战案例,一起来看一下. array_search() ...

  9. mysql安装教程8.0.21安装_mysql8.0.21安装教程图文详解

    1.下载 下载链接 点击download,这里可能需要登录甲骨文的账号,登录一下即可 2.解压 下载好会得到一个安装包 把它解压到一个能找到的目录下即可,我的是这样(my.ini文件你们应该没有) 3 ...

最新文章

  1. 【VS实践】代码调试与错误处理
  2. MySQL下优化SQL的一般步骤
  3. 燕赵志愿云如何认证_如何获得云安全专家CCSP认证
  4. poj 1164 The Castle
  5. 51Nod 1322 - 关于树的函数(树DP)
  6. 调研《构建之法》指导下的历届作品
  7. 集合使用与内部实现原理
  8. 联络员(信息学奥赛一本通-T1393)
  9. iPhone开发之Rotation
  10. python print(len(pi_string))_Python如何从文件中读取数据
  11. 【算法】剑指 Offer 61. 扑克牌中的顺子 【重刷】
  12. 计算机双系统,自己在计算机上安装双系统
  13. [转载] python中numpy库的使用举例
  14. vSphere 5.5 使用Web Client打开控制台窗口显示连接超时
  15. ant jmeter 优化报告
  16. chrome 离线安装包下载
  17. Linq 支持动态字查询集合, 也就是说根据传入的值进行查询。
  18. 零基础安卓手游辅助开发入门视频教程
  19. 原油期货开户条件和流程是什么?
  20. 计算机d盘可以格式化吗,d盘怎么格式化

热门文章

  1. WINDOWS SERVER 2003 AD中的5种操作主机
  2. Windows Phone开发者注册秘籍
  3. 威刚(A-DATA)DDR3-1600震撼评测
  4. 为什么 CAPTCHA 变得越来越难?因为 AI 更聪明了
  5. 高手是如何定位内存问题的代码位置的
  6. LINUX 下 WEBlogic集群的搭建-01
  7. 小米视频加载进度条效果实现
  8. cuda_opencv 矩阵相加
  9. discuz(dz) SSO(单点,同歩,异步)登录 --转
  10. poj 2482 Stars in Your Window(线段树+离散化+线扫描)