找回密码
 nanjixiong2018注册

QQ登录

只需一步,快速开始

发表帖子

Caffe代码理解-卷积层conv_layer

[复制链接]
带下采样的卷积
输入图像X+ 卷积核 K ->卷积操作->输出特征图Y
其中,输入图像和输出特征图都是三维张量,卷积核是四维张量。
(1)
CNN里的卷积不是信号处理里严格的卷积。卷积核是可以不翻转的,《深度学习》书里把互相关和卷积统称为卷积。
直观来讲,卷积可以视为一种局部的线性回归。
i输出特征图通道,jk输出特征图上坐标,l输入图像通道,s步幅,b偏置标量。
输出特征图Y上的元素Y_ijk,对应输入图像X上的一个block,block的左上角左边为[(j-1)s, (k-1)s],宽高为卷积核尺寸,即m/n的最大值。
该block与卷积核做点积,即为Y_ijk的值。所以其实还是个局部线性回归,所谓的参数共享其实就是各个位置的回归权重参数相同,不用每个位置都用一个权重矩阵。
由于图像和特征图是多通道的,所以Y_ijk的计算涉及了多通道上的同一block。
步幅s代表了采样间隔,如果s>1,可视为下采样。

Caffe中矩阵形式的卷积运算
还是要用这张经典的图示
为了加速运算,用空间换时间。
利用im2col函数把多通道输入图像整理为一个单通道矩阵,为什么叫im2col,因为相当于图像中的每一个block都被拉伸为一个column,由于输入是多通道的,所以每个block对应三个串在一起的columns。
如图例所示,input feature matrix的每一行都包含了第一个block的三通道的columns的转置。总共有四行,是因为有四个block参与,即卷积在4个位置上进行了运算。
多通道的卷积核,也是被整理为一个Kernel matrix,每一列由三通道kernel展开成的colums串在一起形成。总共有两列是因为输出是2通道的。
所以,卷积运算就可以表达为矩阵相乘的形式,GEMM (general matrix multiply)
(2)
这里的输入特征图已经是有冗余的了,但是计算更快。

Caffe中conv_layer
由BaseConvolutionLayer继承而来,主要看一下forward和backward计算。

前向计算,由bottom计算top
原文:https://blog.csdn.net/xlmj23/article/details/78998548


使用道具 举报 回复
您需要登录后才可以回帖 登录 | nanjixiong2018注册

本版积分规则