各种卷积层
卷积可以捕获图像相邻像素的依赖性,起到类似滤波器的作用,得到不同形态的特征图。
1D卷积主要应用于时序数据,上图所示的数据有三个数据点,卷积核沿着时间维度滑动。适用于音频和文本数据。
1 |
class torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) |
2D卷积是常用的卷积形式。执行卷积的目的是从输入中提取有用的特征。在图像处理中,执行卷积操作有诸多不同的过滤函数可供选择,每一种都有助于从输入图像中提取不同的方面或特征,如水平/垂直/对角边等。类似地,卷积神经网络通过卷积在训练期间使用自动学习权重的函数来提取特征。所有这些提取出来的特征,之后会被「组合」在一起做出决策。优点:权重共享(weights sharing)和平移不变性(translation invariant),可以考虑像素空间的关系。
多通道卷积
1 |
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) |
1 |
class torch.nn.Conv3d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) |
优点:降低参数量
1 |
conv1 = nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=2, padding=1, groups=in_channels, bias=False) |
空间可分离卷积
空间可分离卷积:将一个卷积核分为两部分(降低计算复杂度,但并非所有的卷积核都可以分)
可形变卷积
1 |
conv2 = nn.Conv2d(1, 1, 3, stride=1, bias=False, dilation=2) |
存在的问题:
转置卷积,是因为用矩阵乘法实现卷积操作时,需要对左乘的矩阵转置,与卷积操作刚好相反,但转置卷积不是卷积的逆运算。
一般的卷积运算可以看成是一个其中非零元素为权重的稀疏矩阵W与输入的图像进行矩阵相乘,反向传播时的运算实质为W的转置与loss对输出y的导数矩阵的矩阵相乘。
逆卷积的运算过程与卷积正好相反,是正向传播时做成W的转置,反向传播时左乘W。
转置卷积可以实现上采样和近似重构输入图像,卷积层可视化。