卷积
首先我们知道,卷积是一种提取特征的过程,通过卷积核操作,就是**输入和卷积核“逐”元素相乘求和的过**程,在图像中
的理解就是,某一处特征的边缘特征也是一样的,那么就可以通过卷积提取,简化中间的计算操作:
输入 * 卷积核 = 输出
在程序中的计算不是我们肉眼可见的通过卷积核的滑动窗口来计算,而是将输入拉成一维向量,卷积核通过操作化为
矩阵,过程简便为矩阵计算,例如 输入I(4*4) 卷积核U(3*3) 输出O(2*2)
**输入拉成16*1的向量,卷积核通过在输入中的计算位置,通过补0,化为4*16的矩阵
U * I = O**
转置卷积
上面知道了直接卷积的计算过程, 从大到小的过程,转置卷积就是利用上面的输出O得到输入I的过程,这里一定会想到转置卷积就是直接卷积的逆过程 ?
回答是错误的,直接卷积和转置卷积并不是可逆的过程,我们通过上面的计算就可以验证
转置卷积计算理解
直观的转置卷积计算过程
输入和输出的尺寸是知道的,那么卷积核大小也确定了,通过补0的方式,进行计算过程
注意: 1. 补0的大小 2.卷积核要翻转180度,因为我们是从可视化角度看的,a是放在左上角第一个,但是计算是右下角
转置卷积计算其实也可以理解为直接卷积,补0就是扩充大小(扩充到 输出-1 +卷积核尺寸大小),然后进行卷积计算,
在代码中,补0和翻转通过conv_2d.transpose实现