2023.2.8跟新一下,以前菜鸡,没用过dilation这个属性,简化了公式,但是最近接触到了ASPP模块,空洞卷积模块,其中用到了dilation属性,因此更新一下博客
1 Conv2d参数计算
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)
设置:
stride = S
kernel_size = K
padding = P
dilation = D 表示的是卷积核K*K个点,相邻两个点之间的距离为(dilation-1)
空洞卷积具体动画见:Pytorch中各种卷积动画
输入尺寸为Win,输出尺寸为Wout
公式:
如果不是空洞卷积,即dilation默认为1时,则使用下面的公式即可!!
2 ConvTranspose2d参数计算
torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros', device=None, dtype=None)
设置:
- in_channels(int) – 输入信号的通道数
- out_channels(int) – 卷积产生的通道数
- kerner_size(int or tuple) - 卷积核的大小
- stride(int or tuple,optional) - 输入特征图元素之间添加stride-1个元素
- padding(int or tuple, optional) - 输入的每一条边补充0的层数,高宽都增加2*padding
- output_padding(int or tuple, optional) - 输出边补充0的层数,高宽都增加padding
- groups(int, optional) – 从输入通道到输出通道的阻塞连接数
- bias(bool, optional) - 如果bias=True,添加偏置
- dilation(int or tuple, optional) – 卷积核元素之间的间距,
这个属性有点东西,先不管,还不会
10.input为输出的特征图尺寸大小,output为输出的特征图尺寸大小
公式:
这里含有dilation属性的公式就不给了,一般不会用这个函数进行空洞卷积的,有需要可以去官网看一下,有具体公式,一般上面的公式就够用了!!
这里重在使用吧,具体得推导公式需要结合参数进行演算。
3 MaxPool2d参数计算
首先熟悉它的默认参数设置:
给出的计算公式:
简化计算:
因为这里的dilation基本不设置,所以题目默认是1,将以上公式化简一下得:
好像和Conv2d的公式是一样的:
这里我下午在计算输出尺寸的时候,去找了相关博客,结果果断被带入坑里了,算了半天尺寸不对,最后去官网看了一下,原来因为默认值不知道,导致翻车,裂开,这里给出官网链接,大家官网为准