conv2d函数_Pytorch 从0开始学(6)——Conv2d 详解
您是否在使用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 详解相关推荐
- conv2d 公式_Pytorch 从0开始学(6)——Conv2d 详解
您是否在使用Conv2d时遇见问题了呢? 您是否还在以Conv2d(128, 256, 3)的方式简单使用这个最具魅力的layer呢? 想更了解Conv2d么?让我们一起来深入看看它的真容吧,让我们触 ...
- 【小白学PyTorch】扩展之Tensorflow2.0 | 21 Keras的API详解(下)池化、Normalization
<<小白学PyTorch>> 扩展之Tensorflow2.0 | 21 Keras的API详解(上)卷积.激活.初始化.正则 扩展之Tensorflow2.0 | 20 TF ...
- C++友元函数和友元类(C++ friend)详解
在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...
- Android4.0源码目录结构详解
Android4.0源码目录结构详解 Android4.0与2.1目录差不多 alsa这块,注意external/tinyalsa下有: include/tinyalsa/asoundlib.h mi ...
- Linux Kernel 6.0 CXL Core pci.c 详解
文章目录 前言 相关链接 Ref 正文 前言 CXL 是一个比较新的技术,所以我研究的内核源码是选了当前比较新的内核版本 linux 6.0.打算将内核关于 CXL 的驱动进行解析一遍,一步一步慢慢来 ...
- Android 8.0学习(32)---Android 8.0源码目录结构详解
Android 8.0源码目录结构详解 android的移植按如下流程: (1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来. (2)正确挂载文件系统 ...
- Android 7.0 Audio的Resample过程详解
Android 7.0 Audio的Resample过程详解 Qidi 2017.02.23 (Markdown & Haroopad) [前言] 处理过音频文件的工程师都知道音频数据存在采样 ...
- php根据元素返回可以,array_search()函数按元素值返回键名步骤详解
这次给大家带来array_search()函数按元素值返回键名步骤详解,array_search()函数按元素值返回键名的注意事项有哪些,下面就是实战案例,一起来看一下. array_search() ...
- mysql安装教程8.0.21安装_mysql8.0.21安装教程图文详解
1.下载 下载链接 点击download,这里可能需要登录甲骨文的账号,登录一下即可 2.解压 下载好会得到一个安装包 把它解压到一个能找到的目录下即可,我的是这样(my.ini文件你们应该没有) 3 ...
最新文章
- 【VS实践】代码调试与错误处理
- MySQL下优化SQL的一般步骤
- 燕赵志愿云如何认证_如何获得云安全专家CCSP认证
- poj 1164 The Castle
- 51Nod 1322 - 关于树的函数(树DP)
- 调研《构建之法》指导下的历届作品
- 集合使用与内部实现原理
- 联络员(信息学奥赛一本通-T1393)
- iPhone开发之Rotation
- python print(len(pi_string))_Python如何从文件中读取数据
- 【算法】剑指 Offer 61. 扑克牌中的顺子 【重刷】
- 计算机双系统,自己在计算机上安装双系统
- [转载] python中numpy库的使用举例
- vSphere 5.5 使用Web Client打开控制台窗口显示连接超时
- ant jmeter 优化报告
- chrome 离线安装包下载
- Linq 支持动态字查询集合, 也就是说根据传入的值进行查询。
- 零基础安卓手游辅助开发入门视频教程
- 原油期货开户条件和流程是什么?
- 计算机d盘可以格式化吗,d盘怎么格式化