电子说
channels
,取决于图片类型;out_channels
,取决于卷积核的数量。此时的 out_channels
也会作为下一次卷积时的卷积核的 in_channels
;in_channels
,上面已经说了,就是上一次卷积的 out_channels
,如果是第一次做卷积,就是样本图片的 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的结果。如下图所示:
class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True)
nn.Conv2d
的功能是:对由多个输入平面组成的输入信号进行二维卷积。输入信号的形式为:
(N,C_{in},H,W)
**N:**表示batch size(批处理参数)
C_{in} :表示channel个数
**H,W:**分别表示特征图的高和宽。
**stride(步长):**步长,默认为1,可以设为1个int型数或者一个(int, int)型的tuple。
**kernel_size:**卷积核的宽度和长度,单个整数或由两个整数构成的list/tuple。如为单个整数,则表示在各个空间维度的相同长度。
**padding(补0):**控制zero-padding的数目,padding是在卷积之前补0。
**dilation(扩张):**控制kernel点(卷积核点)的间距; 可以在此github地址查看:Dilated convolution animations
**groups(卷积核个数):**通常来说,卷积个数唯一,但是对某些情况,可以设置范围在1 —— in_channels中数目的卷积核:
经过一次卷积之后,生成的图的大小:
(original_size - (kernal_size - 1)) / stride
nn.ConvTranspose2d的功能是进行反卷积操作
nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !