ref: https://www.zhihu.com/question/43609045
https://www.zhihu.com/question/48035421
上采样的卷积层有很多名字:全卷积(full convolution),网络内上采样( in-network upsampling),微步幅卷积(fractionally-strided convolution),反向卷积(backwards convolution),去卷积(deconvolution),上卷积(upconvolution),以及转置卷积(transposed convolution)。用「去卷积」这个术语是非常不推荐的,因为这是一个过载的术语:在数学运算或计算机视觉中的其他应用有着完全不同的含义。
matlab conv参数有三种:valid/same/full
full: 只要有overlap就可以卷积
valid: kernel必须全部cover在features map上,不加padding会导致features map变小
same: 设置初始卷积位置,使得生成的feature map和原始feature map大小一样。
deconv: stride=1: 相当于matlab full conv
stride=2: 则先在feature map两两元素之间插入1个0,再卷积,卷积核的中心必须在插完0后的feature map上。此时卷积核为k*k,相当于pad=(k-1)/2
output feature map大小计算:
conv: output = (input + 2*pad - kernel)/stride+1
deconv: output = (input - 1) * stride + kernel - 2*pad