caffe中卷积层的实现
在caffe中卷基层是通过矩阵相乘来实现的实现,直接计算卷积可以由下面的程序表示:
可以看到,这段程序循环嵌套多,时间复杂度高,而使用矩阵相乘的形式:很多现成的矩阵运算库,不重复“造轮子” 。
我们来看代码:
在conv_layer 中卷记的操作主要由上面两个带红框的操作组成,其中bias是为卷积操作后的结果加入偏差项,这个简单暂不分析。关键在于gemm,卷积操作的核心所在。如下图:
在做矩阵相乘之前首先要将图片转化成向量的形式,调用的函数就是im2col。然后就是矩阵相乘gemm。Im2col 是一个用于图像到向量转换的函数,你大多数情况下不需要了解他,他的作用就是用在caffe原生的卷积运算中,将卷积运算变成矩阵相乘的运算。具体分析im2col_layer.cpp代码:
如下为参数设定的一些代码:
SetUp kernelShape
SetUp stride
SetUp pad
其中,pad的含义可以由下图所示:
SetUp dilation(膨胀系数)
通过reshape为im2col分配空间:
以及计算生成的卷记feature map的尺寸:
最关键的核心在于如下代码:
这段代码看上去特别复杂,但整体上可以分成两个部分,一个是红框的,一个是绿的。其中input_row:在原图中的行数input_col:在原图中的列数
通过这段代码,卷记的kernel就能转化成如下的矩阵:
这样,feature map 就转换成了对应的矩阵的形式,因此,卷积的操作也就能对应的用矩阵相乘的形式实现了。
77695@中国科学技术大学多媒体计算与通信教育部-微软重点实验室
MultiMedia Computing Group
caffe中卷积层的实现相关推荐
- Caffe中BN层与CONV层的融合(merge_bn)
半年前写的博客,今天发现没有发出去,还好本地有md的文档,决定重新发一下 毕竟网上来回抄袭的blog太多了,代码质量也莫得保证 今天需要用pytorch融合下bn层,写个脚本稍后再传到csdn上 原理 ...
- caffe中各层的作用
caffe中各层的作用: 关于caffe中的solver: cafffe中的sover的方法都有: Stochastic Gradient Descent (type: "SGD" ...
- 三分钟完全了解PyTorch中卷积层内部计算方法和权值初始值的来历,让你对模型有更深层次的理解
首先先说明第一个答案,也就是PyTorch中卷积层的计算方法,其实这点很多人可能在书上已经看过图了,我只是用代码复现一遍 我们把所有变量都明确,首先是输入变量,我们设为2 * 2的全1矩阵,如下: 然 ...
- Pytorch中卷积层转向全连接层时,全连接层输入维度的确定
Pytorch中卷积层转向全连接层时,全连接层输入维度的确定 一.代码法: 改变的AlexNet网络结构: AlexNet 二.公式法: 一.代码法: 改变的AlexNet网络结构: 输入维度为 ( ...
- CNN中卷积层、池化层和全连接层分别有什么作用和区别?
卷积层:提取特征."不全连接,参数共享"的特点大大降低了网络参数,保证了网络的稀疏性,防止过拟合.之所以可以"参数共享",是因为样本存在局部相关的特性. 池化层 ...
- caffe中各个层——解析
转自:http://www.cnblogs.com/denny402/p/5071126.html 所有的层都具有的参数,如name, type, bottom, top和transform_para ...
- Caffe中Convolution层
层类型:Convolution lr_mult: 学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr.如果有两个lr_mult, 则第一个表示权值的学习率 ...
- caffe中batchnormal层的param参数lr_mult和decay_mult都为0的原因
如下截取一部分train.prototxt的片段: layer { name: "conv2_em/bn" type: "BatchNorm" bo ...
- CNN网络中卷积层的正向传播与反向传播理解
1. 基础理论 1.1 网络结构梳理 在CNN网络模型是建立在传统神经网络结构上的,对于一个传统的神经网络其结构是这样的: 从上面可以看出,其模型是全连接的.若是使用一幅512*512大小的图像作为输 ...
最新文章
- 网站架构之统一数据服务平台技术
- iOS 实现多个可变 cell 复杂界面的制作
- java通过JDBC链接SQLServer2012
- koa html中添加数据,从零开始的Koa实战(6)插入数据
- torch-toolbox
- 禁止更改计算机名_【复习收藏】计算机操作系统考点归纳
- Juniper Space License Issue on Citrix Xen Environment
- VS的包含目录、库目录、引用目录、可执行目录解释
- python爬虫下载模块_python爬虫系列(4.5-使用urllib模块方式下载图片)
- 基于CSS3实现水平轮播效果
- oracle 不等函数,SQL(Oracle)日常使用与不常使用函数的汇总
- oracle怎么把in值列出来,oracle – SELECT的解析和绑定变量.. WHERE列IN(..)查询
- 毒鸡汤|心情不好的时候,看一看。你会发现心情会很不好。
- FFTW使用说明及实例调用
- 冲击港交所:百果园书写水果连锁运营默示录
- 角色设计竟然有这些小技巧
- 【C018】外星人冯诺依曼【转】
- 天琊 V1.0(测试 1125版)
- 下载b站视频方法,pr去水印
- 【bzoj 3238】差异