目录
1.转置卷积Transposed Convolution概念
推荐课程:转置卷积(transposed convolution)_哔哩哔哩_bilibili
感谢霹雳吧啦Wz,真乃神人也。
1.转置卷积Transposed Convolution概念
转置卷积的作用:转置卷积是上采样方法中的一种, 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作,这时就需要通过上采样操作将图像恢复到原尺寸大小。
2.转置卷积操作步骤
注:转置卷积不是卷积的逆运算,转置卷积也是卷积。
当填充为p,步幅为s时:
1.在输入特征图元素的行和列之间插入s-1行和列的0。
2.将输入特征图元素填充k-p-1行和列的0(k是核窗口大小)
3.将核矩阵上下、左右翻转
4.然后做正常卷积(填充=0,步幅=1)
输入的高(宽)为h,核为k,填充为p,步幅为s则转置卷积后h‘ = hs + k - 2p - s
例:当填充=1,步幅=2
3.转置卷积参数
torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, groups=1, bias=True, dilation=1)
4.实战案例
pytorch官方案例:
import torch
from torch import nn
input = torch.randn(1, 16, 12, 12)
print("输入形状大小:",input.size())
# 下采样
downsample = nn.Conv2d(16, 16, 3, stride=2, padding=1)
# 上采样
upsample = nn.ConvTranspose2d(16, 16, 3, stride=2, padding=1)
# 先下采样
h = downsample(input)
print("经过3x3的下采样后,形状大小:",h.size())
# 再上采样
output = upsample(h, output_size=input.size())
print("经过3x3的转置卷积后,形状大小:",output.size())
输出:
输入形状大小: torch.Size([1, 16, 12, 12])
经过3x3的下采样后,形状大小: torch.Size([1, 16, 6, 6])
经过3x3的转置卷积后,形状大小: torch.Size([1, 16, 12, 12])