发布网友 发布时间:2022-10-13 17:56
共1个回答
热心网友 时间:2023-11-07 15:03
在这里记录一下PyTorch中常用的Conv2d的使用,卷积神经网络可以说是做视觉算法的必使用的组件, Conv2d的官方文档
Conv2d函数的参数为:
各个参数含义如下:
. in_channels(int)-Number of channels in the input image
. out_channels(int)-Number of channels proced by the convolution
. kernel_size(int or tuple)-Size of the convolving kernel
. stride(int or tuple,optional)-Stride of the convolution Default:1
. padding(int or tuple,optional)-Zero-padding added to both sides of the input.Default:0
. padding_mode(string,optional)-zeros
. dilation(int or tuple,optional)-Spacing between kernel elements.Default:1
. groups(int,optional)-Number of blocked connections from input channels to output channels.Default:1
. bias(bool,optional)-if True.adds a learnable bias to the output.Default: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,那么每个输出卷积核,只与输入的对应的通道进行卷积。
输入输出格式:
. N是batch的大小
. C是通道数量
. H是输入的高度
. W是输入的宽度
其中N和C-in、C-out是人为指定,H,W是原始输入,H-out,W-out是通过公式计算出来的,公式如下: