美文网首页
caffe卷积原理

caffe卷积原理

作者: 纪源丰 | 来源:发表于2017-09-25 11:13 被阅读0次

作为cnn中最重要的卷积,最简单的理解就为:

按照一定步长,卷积核与图片点乘求和得到新的值

其中,卷积主要的参数有:

stride 步长              stride_w,stride_h

kernel_size             kernel_w,kernel_w

dilation                    膨胀系数

padding                  pad_w,pad_h

卷积层:conv_layer.cpp

里面主要有

compute_output_shape()    计算输出blob的大小

Forward_cpu

Backward_cpu

其中Forword_cpu主要用到了forward_cpu_gemm,这个位于base_conv_layer,

forward_cpu_gemm里面使用到了conv_im2col_cpu,caffe_cpu_gemm。

conv_im2col_cpu   是把输入图像变为一个矩阵,这样子做能直接和卷积核组成的矩阵做点乘,得到的矩阵就为 卷积后每一个特征图就为为这矩阵中一个行向量。

查看cov_im2col_cpu;

根据条件满足与否,分为二维卷积以及n维卷积

我们先以im2col_cpu为入手:

主要参数为:

1.data  

 2.conv_channels 卷积的通道数

3.conv_input_shape.cpu_data()[1]         即image_h 输入图像的height,主要下标

4conv_input_shape.cpu_data()[1]          image_w

5.padding_h,padding_w

6.stride_h,stride_w

7.dilation    膨胀系数

推导过程太复杂了,这里有一个单通道的完整的推导过程:lib.csdn.net/article/aiframework/62849

总之,im2col,就是把一个图片上的对应每一个卷积核大小的窗函数里面的元素,变为列向量,随着步长的移动,得到不同的列向量,合并起来得到一个矩阵,也就是col_buff

那caffe中是怎么样计算卷积的:

我们先从单通道入手,用一个单通道卷积核去卷积一个单通道图像:

在不考虑膨胀系数的情况下,N=((image_h+2*pad_h-kenrel_h)/stride_h+1)*((image_w+2*pad_w-kenrel_w)/stride_w+1),其实就是计算经卷积后输出的图像的长与宽,再相乘,得到feature map的大小。

那当是多通道图片(比如说最开始的三通道,以及经过一层卷积后的拥有很多通道的特征图)的情况是什么样的?

c通道的情况

下面以一个实际的例子:

这就是caffe卷积的原理。


caffe_gpu_gemm(CblasNoTrans,CblasTrans,M,N,K(Dtype)1,top_diff,bottom_data,(Dtype)1,weights_diff)

voidcaffe_gpu_gemm(constCBLAS_TRANSPOSETransA,constCBLAS_TRANSPOSETransB,const intM,const intN,const intK,constDtypealpha,constDtype* A,constDtype*B,constDtypebeta,

Dtype* C);

caffe_gpu_gemm(CblasTrans,CblasNoTrans,kernel_dim_,

conv_out_spatial_dim_,conv_out_channels_/group_,

(Dtype)1.,weights +weight_offset_* g,output +output_offset_* g,

(Dtype)0.,col_buff +col_offset_* g);

相关文章

  • caffe卷积原理

    作为cnn中最重要的卷积,最简单的理解就为: 其中,卷积主要的参数有: stride 步长 strid...

  • Caffe的空洞卷积

    caffe卷积层延伸:卷积核膨胀详细解析

  • BN层合并原理及实现

    原理 卷积层计算公式 BN层计算公式 公式推导 代码实现 基于caffe的python接口实现 问题及思考 由公式...

  • Caffe详解(二)卷积层

    Caffe详解从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识! 卷积层参数说明 卷积配置...

  • 【caffe解读 】caffe从数学公式到代码实现5-caffe

    本文首发于微信公众号《与有三学AI》 [caffe解读] caffe从数学公式到代码实现5-caffe中的卷积 今...

  • Caffe 反卷积

    最近在设计多尺度的网络用于更好的提取图像特征,需要先对特征图进行下采样之后再进行上采样恢复特征图分辨率以便于融合,...

  • 深度学习环境搭建

    卷积神经网络开发环境搭建 框架(Frameworks) Caffe, Torch, Theano, Tensorf...

  • tensorflow && caffe conv

    caffe 跟 tensorflow对二维卷积的实现都是基于im2col的思路,上两图为caffe的实现,输入格式...

  • 6、模糊

    模糊,即离散卷积所以卷积通俗话语是:模糊操作 一维卷积原理: 多维卷积原理:即每个通道进行一维卷积 模糊:均值模糊...

  • 【连载】深度学习笔记11:利用numpy搭建一个卷积神经网络

    前两个笔记中集中探讨了卷积神经网络中的卷积原理,对于二维卷积和三维卷积的原理进行了深入的剖析,对 CNN 的卷积...

网友评论

      本文标题:caffe卷积原理

      本文链接:https://www.haomeiwen.com/subject/ieeocxtx.html