卷积操作是深度学习中最重要的运算之一。它的作用是:使用卷积核对输入进行过滤,提取输入中的重要特征。
卷积操作有以下几个常见的变体:
- 卷积:标准的二维卷积操作。使用卷积核对输入进行卷积,提取特征。
- 转置卷积:与标准卷积相反,起到上采样的作用。一般用于decoder中。
- 带padding的卷积:在输入边缘填充0,控制输出大小。一般用于保持输入输出尺寸不变。
- 带stride的卷积:卷积核移动的步长,控制输出特征图大小。较大的stride可以减小输出大小。
- 可分离卷积:将标准卷积拆分为两个卷积过程:空间卷积和cross channel卷积。这可以减小模型的参数量。
- 膨胀卷积:在输入内部填充0,相当于扩大了感受野。一般用于密集预测任务。
- 转置可分离卷积:转置卷积的可分离版本,用于decoder中。
代码示例:
标准卷积:
python
conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=1)
output = conv(input)
转置卷积:
python
conv_t = nn.ConvTranspose2d(in_channels, out_channels, kernel_size=3, stride=2, padding=1)
output = conv_t(input)
带padding的卷积:
python
conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=1) # padding=1
output = conv(input)
膨胀卷积:
python
conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=1, padding=2, dilation=2)
output = conv(input)