CNN中,增加Padding过后,为我们带来的那些负面影响。
如上图所示:
第一行为普通3x3卷积,步长1,padding 0,
第二行为普通3x3卷积,步长1,padding 1,
第三行为膨胀3x3卷积,dilation rate=3,步长1,padding 3.
上图箭头右向所指,为cnn底层在caffe 和darknet的底层实现,用c或c++,至于pytorch和tensorflow 是否也是这样实现cnn我不清楚,但是目前来讲,有效实现卷积的也就3种方式,
im2col(上图) ,winograd, FFT,但是还是im2col比较常见,winograd好像是商汤最近几年提出来的,通过特殊数学计算方式,减少计算量,目前该方法被应用在腾讯移动端深度学习框架NCNN中,至于FFT,还没见到用在深度学习种。
至于为什么使用im2col,这还是贾清扬大神在写caffe时提出来的,因为图像中,一个块内的像素点在内存中是地址不连