卷积计算的底层实现(Caffe)

本文介绍了Caffe框架如何通过矩阵相乘实现卷积操作。卷积核被转换为Cout×M的矩阵,而特征图转换为(H'×W')×(C×K×K)的矩阵。详细阐述了这个过程,并给出了具体计算的例子。
摘要由CSDN通过智能技术生成

卷积本身的执行过程是通过在特征图上滑动卷积核来完成的。但是在Caffe的底层实现是通过矩阵相乘的方式一步完成卷积的操作。

假设输入图像及卷积和大小如下图所示:

在Caffe的实现中,它分别将特征图和卷积转换为矩阵。具体的转换如下:

卷积核


对于2D卷积,本身是四维的卷积核,将其转换为二维由 C o u t × C × K × K C_{out}\times C \times K \times K Cout×C×K×K变为 C o u t × M C_{out} \times M Cout×M,其中 M = C × K × K M=C \times K \times K M=C×K×K
举个例子,例如卷积核的维度是 2 × 3 × 2 × 2 2 \times 3 \times 2 \times 2 2×3×2×2,分别为
f i l t e r # 1 [ 1 1 2 2 ] [ 1 1 1 1 ] [ 0 1 1 0 ] f i l t e r # 2 [ 1 0 0 1 ] [ 2 1 2 1 ] [ 1 2 2 0 ] filter \#1 \\ \left[ \begin{matrix} 1 & 1 \\ 2 & 2 \\ \end{matrix} \right] \left[ \begin{matrix} 1 & 1 \\ 1 & 1 \\ \end{matrix} \right] \left[ \begin{matrix} 0 & 1 \\ 1 & 0 \\ \end{matrix} \right] \\ filter \#2 \\ \left[ \begin{matrix} 1 & 0 \\ 0 & 1 \\ \end{matrix} \right] \left[ \begin{matrix} 2 & 1 \\ 2 & 1 \\ \end{matrix} \right] \left[ \begin{matrix} 1 & 2 \\ 2 & 0 \\ \end{matrix} \right] filter#1[1212][1111][0110]fi

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值