在caffe中如何计算卷积的?
caffe中, 卷积网络的前向传播过程需要计算类似
另外可以参考知乎问题:在 Caffe 中如何计算卷积?
我们知道, caffe中的卷积运算采用的是矩阵计算, 那么caffe是如何构造卷积矩阵的.
我们可以参考下图:
具体的论文参考:High Performance Convolutional Neural Networks for Document Processing
由图可知, 传统的卷积方式与矩阵计算方式的卷积运算的区别, 后者通过预先转换, 得到输入数据与卷积核的矩阵形式, 然后进行一次矩阵运算就能得到多个卷积核的特征图.
我们假设
输入数据input_features:
卷积核conv_filter:
卷积超参数:stride是卷积步长,
卷积超参数:pad是卷积填充操作,
第一步, 先将input_features按照配置的卷积方式来转换成矩阵, 也就是图中input_features->input_features(Matrix)的过程.那么新的input_features(Matrix):
input_features(Matrix)是一个二维矩阵, 其中ofs代表的是output_features_size, ofs由输入数据的大小
第二步, 将卷积核转换成矩阵形式, 由conv_filters
第三步, 进行矩阵运算
最后将output_features(Matrix)转换成output_features