caffe中卷积实现的理解

caffe中卷积实现的理解

最近看了一下mobileNets的论文,发现卷积计算的内容与自己的理解有比较大的出入,所以重新查看了一下caffe中卷积网络的代码,以及查找了网络上的一些资料。以下是对于caffe中实现卷积网络的理解。
下图是卷积计算的一个简单例子。
这里写图片描述
其是3*5*5的feature map 与2*(3*3*3)的卷积核进行卷积,获得最终2*3*3的feature map。(图片中channel写在最后的维度),其stride应该为2,pad为1。
图片中的第一列为输入的feature B,第二列为卷积核的第一个filter,第三列为卷积核的第二个filter,卷积核为A。第四列为经过卷积得到的结果C。图中第四列的绿色的框中的8是经过第一列的feature map中蓝色的框与第二列的红色的框中的矩阵进行点乘获得再加上bias中的值。
从这个图中可以形象的展现,top层的feature map中的每个feature值(绿色框中的8)是bottom层的feature map中对应的所有channel中的感受区域(蓝色区域)的信息的一种点乘计算的结果。多个channel的信息会汇聚到top层的该区域的信息。
B为C×W_I×H_I 的feature map。卷积核A为O×C×W_F×H_F,得到的结果feature map 为O×W_O×H_O
为了更加快捷的计算,caffe将整体采用矩阵相乘的方式进行计算,其将B扩展成(C×W_F×H_F)(W_O×H_O),将A变成(O)(C×W_F×H_F)的矩阵,将A×B则得到最终的结果矩阵为(O)*(W_O×H_O),

将feature map 扩展成(C×W_F×H_F)*(W_O×H_O)的矩阵,在caffe中采用的是im2col的函数。每个(C×W_F×H_F)可以认为上图中的蓝色框的区域中的27个数字拉成了一列。
类似如下图所示:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值