关于caffe中的blob结构及卷积计算汇总

本文详细介绍了Caffe中的Blob数据结构,将其比喻为4维数组,并解释了Blob在存储图像、参数和梯度等方面的作用。此外,文章讨论了卷积计算的过程,包括卷积核和输入Blob的转换,以及如何通过矩阵相乘实现高效的卷积运算。
摘要由CSDN通过智能技术生成

传送门:根据博主这篇文章汇总:http://www.cnblogs.com/zjutzz/p/5960289.html

关于caffe中的blob结构及卷积计算

blob是caffe中的基本数据结构,简单理解就是一个“4维数组”。但是,这个4维数组有什么意义?

TensorFlow这款google出的框架,带出了tensor(张量)的概念。虽然是数学概念,个人还是倾向于简单理解为“多维数组”,那么放在这里,caffe的blob就相当于一个特殊的tensor了。而矩阵就是二维的张量。

首先,看看blob的4个维度:

num: 图像数量

channel:通道数量

width:图像宽度

height:图像高度

caffe中默认使用的SGD随机梯度下降,其实是mini-batch SGD
每个batch,就是一堆图片。这一个batch的图片,就存储在一个blob中。

当然,blob并不是这么受限的、专门给batch内的图片做存储用的。实际上,参数、梯度,也可以用blob存储的。只要是caffe的网络中传递的数据,都可以用blob存储。

而且,blob实际上也并不一定是4维的。它在实现上其实就是1维的指针,而我们作为用户感受到的“多个维度”是通过shape来操作的。

 

在用faster-rcnn训练的时候使用了ZF网络,有篇博客写到(下面有传送门)


参考博客:http://blog.csdn.net/sloanqin/article/details/51545125

卷积之后有一个∑和sigmoid的两个过程,前者是累加,后者是映射到0-1之间。具体到faster-rcnn,∑对应的就是:各个通道上对应位置做累加;而激活函数使用的应该是ReLU。anyway,这里的累加和激活函数处理后,通道数就变成了一个;也就是,对于一个滤波器,滑窗滤波+累加、激活函数后,得到的一个feature map。

具体点说,这里的滤波器(卷积核),是3维的,(Width,Height,Channel)这样;我们用它在一个feature map上按滑窗方式做卷积,其实是所有Channel上同时做sliding window的操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值