转置卷积可以用来增大输入的高宽,算是对卷积的反卷?并不是。
转置卷积本质上还是一个卷积,它只是与卷积在形状上是相反的,但是数值不是;
卷积的逆运算是反卷积,反卷积的输入和输出与卷积的输出和输入相同;
反卷积是数学上的概念,计算机领域但凡提到“反卷积神经网络”指的都是用转置卷积,因为反卷积在机器学习领域好像没什么价值。
早期的卷积都是通过这种等价的矩阵乘法完成的,从这个角度看,我们用来卷积的卷积核对应的向量为V,而反过来的卷积正好是V的转置,因此这种反卷的过程叫做转置卷积。
转置卷积其实和卷积没太大区别了,手搓比较容易,代码不写了。
但是这里要注意卷积的两个超参数:步幅和填充。
转置卷积的填充,可以理解为填充在输出上。当步长为1的时候,我们对一个2x2的矩阵做2x2核的转置卷积,得到的结果应该是3x3,(见最上面那张图),但是如果我们让padding=1,那么得到的结果就是1x1的结果,因为在输出上padding了一圈,让输出成为3x3,那么把这一圈去掉,就是1x1.说人话,其实就是padding在输出后把输出的矩阵的前padding行和列与后padding行和列给删除了而已。
步幅越大,结果就越大,还是上面那个例子,如果把stride=2,那么就不会有重叠的部分,也因此得到的结果就是4x4的矩阵。
转置卷积,本质上还是一种卷积。
转置卷积的步幅和填充取值后对形状的计算,可以再看一遍:https://www.bilibili.com/video/BV1CM4y1K7r7?spm_id_from=333.999.0.0
至于转置卷积到底为什么存在,这得等明天去研究全连接卷积神经网络。