Caffe学习系列(6):Blob,Layer and Net以及对应配置文件的编写
深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成。Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型。它将所有的信息数据定义为blobs,从而进行便利的操作和通讯。Blob是caffe框架中一种标准的数组,一种统一的内存接口,它详细描述了信息是如何存储的,以及如何在层之间通讯的。
1、blob
Blobs封装了运行时的数据信息,提供了CPU和GPU的同步。从数学上来说, Blob就是一个N维数组。它是caffe中的数据操作基本单位,就像matlab中以矩阵为基本操作对象一样。只是矩阵是二维的,而Blob是N维的。N可以是2,3,4等等。对于图片数据来说,Blob可以表示为(N*C*H*W)这样一个4D数组。其中N表示图片的数量,C表示图片的通道数,H和W分别表示图片的高度和宽度。当然,除了图片数据,Blob也可以用于非图片数据。比如传统的多层感知机,就是比较简单的全连接网络,用2D的Blob,调用innerProduct层来计算就可以了。
在模型中设定的参数,也是用Blob来表示和运算。它的维度会根据参数的类型不同而不同。比如:在一个卷积层中,输入一张3通道图片,有96个卷积核,每个核大小为11*11,因此这个Blob是96*3*11*11. 而在一个全连接层中,假设输入1024通道图片,输出1000个数据,则Blob为1000*1024
2、layer
层是网络模型的组成要素和计算的基本单位。层的类型比较多,如Data,Convolution,Pooling,ReLU,Softmax-loss,Accuracy等,一个层的定义大至如下图:
从bottom进行数据的输入 ,计算后,通过top进行输出。图中的黄色多边形表示输入输出的数据,蓝色矩形表示层。
每一种类型的层都定义了三种关键的计算:setup,forward and backword
setup: 层的建立和初始化,以及在整个模型中的连接初始化。
forward: 从bottom得到输入数据,进行计算,并将计算结果送到top,进行输出。
backward: 从层的输出端top得到数据的梯度,计算当前层的梯度,并将计算结果送到bottom,向前传递。
3、Net
就像搭积木一样,一个net由多个layer组合而成。
name: "LogReg"
layer {
name: "mnist"
type: "Data"
top: "data"
top: "label"
data_param {
source: "input_leveldb"
batch_size: 64
}
}
layer {
name: "ip"
type: "InnerProduct"
bottom: "data"
top: "ip"
inner_product_param {
num_output: 2
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "ip"
bottom: "label"
top: "loss"
}
第一行将这个模型取名为LogReg, 然后是三个layer的定义,参数都比较简单,只列出必须的参数。具体的参数定义可参见本系列的前几篇文章。
最新文章
- python处理空格脚本
- js读取解析JSON数据
- 【转】java URLConnection从网上下载图片或音乐
- 【socket.io研究】2.小试牛刀
- Ubuntu在下面LAMP(Linux+Apache+MySQL+PHP) 开发环境的搭建
- SQL进阶1:case表达式的用法示例
- Linux基础之常用命令整理(一)
- 日志模块logging
- poj3579 二分套二分
- 写给大忙人的spring cloud 1.x学习指南
- python之路——2
- Laravel 5.6 视图用Blade语法传递变量和流程控制if 语句和循环语句
- ubuntu mongodb backup/restore (备份和恢复)
- myBatis逆向工程的使用
- LUA ipairs遍历的问题
- JavaScript的重载(通过argument.length)
- IOS JPush 集成步骤(极光远程推送解决方案,支持android和iOS两个平台)
- python之短路计算-布尔类型
- 利用$(window).resize()实现窗口大小自适应宽度问题
- 练习十三:水仙花数,用for循环实现
热门文章
- iOS之地理位置及定位系统 -- 入门笔记(用Swift)
- 关于IOS应用程序视图
- Atitit.一个cms有多少少扩展点,多少api wordpress  cms有多少api。。扩展点
- 2013MPD上海6.23 PM 光耀:读心术,用户心理的产品之道
- Effective Java 63 Include failure-capture information in detail message
- SQL Server 2008 R2——VC++ ADO 操作 多线程操作 代码结构
- ELK 信息统计分析-2
- multiprocessing module in python(转)
- 浅谈Java中的深拷贝和浅拷贝(转载)
- NOIP2008普及组传球游戏(动态规划)——yhx