1、标准的卷积(Conv2d)输出计算:

通俗一点:

举例:
1. 卷积示例
输入:5×5
卷积核:3×3
步长 stride = 2
填充 padding = 1
dilation = 1
输出尺寸:3×3。
二、转置卷积(反卷积)(ConvTranspose2d)输出尺寸计算
PyTorch 官方:
Hout=(Hin−1)×stride[0]−2×padding[0]+dilation[0]×(kernel_size[0]−1)+output_padding[0]+1

通俗一点:

举例:
2. 转置卷积示例
输入:3×3
卷积核:3×3
步长 stride = 2
填充 padding = 1
output_padding = 0
dilation = 1
计算:
输出尺寸:5×5。
若 output_padding = 1,则:
![]()
输出尺寸:6×6。
总结:
卷积的api:
nn.Conv2d(1, 1, kernel_size=3, stride=2, padding=1)
nn.Conv2d(in_channel,out_channel,kernel_size=3, stride=2, padding=1)
输入通道数(in_channels)= 1。意味着输入图像是单通道,比如灰度图。
输出通道数(out_channels)= 1。意味着卷积后输出的特征图也是单通道。
反卷积的参数:
torch.nn.ConvTranspose2d( in_channels, # 输入通道数 out_channels, # 输出通道数 kernel_size, # 卷积核尺寸 stride=1, # 步长 padding=0, # 填充 output_padding=0, # 输出填充(转置卷积特有) dilation=1, # 膨胀率 groups=1, # 分组卷积 bias=True, # 是否添加偏置 padding_mode='zeros' # 填充方式 )
output_padding是什么意思?
output_padding是可选参数,用于精确控制输出尺寸,通常取 0 或 1。
dilation(膨胀指数)是啥意思?
在卷积中,膨胀(dilation) 是指卷积核元素之间的间隔。标准卷积的膨胀率
dilation=1,表示卷积核元素是连续相邻的。当dilation > 1时,卷积核的元素会按一定间距分布,从而在不增加参数量的情况下扩大感受野。
dilation=1 的 3x3 核索引(相对位置):
(-1,-1) (-1,0) (-1,1)
(0,-1) (0,0) (0,1)
(1,-1) (1,0) (1,1)dilation=2 的 3x3 核索引(相对位置):
(-2,-2) (-2,0) (-2,2)
(0,-2) (0,0) (0,2)
(2,-2) (2,0) (2,2)些坐标是卷积核内每个权重相对于核中心(0,0)的偏移量,偏移量是多少,dilation就是多少?
有效卷积核计算公式:

kernel_size=3, dilation=2时,有效卷积核大小为 2×(3−1)+1=5,相当于一个 5×5 的卷积核但只有 9 个非零权重(间隔分布)。
# 普通卷积 nn.Conv2d(1, 1, kernel_size=3, dilation=1) # 膨胀卷积 nn.Conv2d(1, 1, kernel_size=3, dilation=2)前者感受野 3×3,后者感受野 5×5,参数量相同(都是 9 个权重)。
y = torch.randn(1, 1, 3, 3)创建了一个四维张量,作为卷积(或转置卷积)的输入时,其形状的含义是:
第 1 维(1):批量大小(batch size),表示一次处理 1 个样本。
第 2 维(1):通道数(channels),表示每个样本有 1 个通道(例如灰度图)。
第 3 维(3):高度(height),表示特征图的高度为 3。
第 4 维(3):宽度(width),表示特征图的宽度为 3。


6138

被折叠的 条评论
为什么被折叠?



