先来一下code, 基本思路就是把 input_shape( c x h x w ) -> (out_h x out_w) x (i_c x k_h x k_w), 把filter(o_c x i_c x k_h x k_w)-> o_c x (i_c x k_h x k_w)
然后就是矩阵乘法 IN * W.T, caffe里im2col : input_shape( c x h x w ) -> (i_c x k_h x k_w) x (out_h x out_w) , W * IN
x is bottom.cpu_data
forward: Y = W X
conv_layer: Foward_cpu()
base_conv_layer: forward_cpu_gemm() [ caffe_cpu_gemm() <- cblas]
im2col
backword:
1. back_pro: bottom_diff = W.T * top_diff_
2. weight_gradient: this.diff = top_diff * X.T
-------------reference------------------
1. high performance convolution neural network for document processing
2.