深度神经网络是一种模块化的模型,它由一系列作用在数据块之上的内部连接层组合而 成。Caffe 基于自己的模型架构,通过逐层定义(layer-by-layer)的方式定义一个网络(Nets)。 网络从数据输入层到损失层自下而上地定义整个模型。Caffe 使用 blobs 结构来存储、交换和 处理网络中正向和反向迭代时的数据和导数信息:blob 是 Caffe 的标准数组结构,它提供了一个统一的内存接口。Layer是Caffe模型和计算的基本单元,Net是一系列layers和其连接的集合。Blob详细描述了信息是如何在layer和net中存储和交换的。Solving(求解方法)单独配置,以解耦模型的建立与优化的过程。
Caffe的核心模块有三个,分别是Blobs、Layers和Nets。Blobs用来进行数据存储、数据交互和处理,通过Blobs,统一制定了数据内存的接口。Layers是神经网络的核心,定义了许多层级结构,它将Blobs视为输入输出。Nets是一系列Layers的集合,并且这些层结构通过连接形成一个网图。
1、Blobs Blobs本质是一个N维向量,用来存储数据信息,这些数据信息包括图片、深度网络进行前向传输时的数据和反向求梯度过程时的梯度数据等。对于图像数据来说,Blobs通常是一个4维向量,其格式为(Number,Channel,Height,Width),其中Channel表示图像的通道数,若图像是单通道的灰度图,则Channel=1;若是3通道的RGB图像,则Channel=3。Height和Width分别表示图像的高度和宽度。至于Number则表示图像批块(Batch),批处理可以使神经网络有更大的吞吐量。
2、Layers Layers是神经网络的核心,Caffe设计实现了许多层结构,包括卷积、池化、损失等层结构,利用这些层结构可以实现绝大部分的神经网络模型。Layers将下层的数据输出作为输入,进而通过内部运算输出。
Layers层的定义和使用一般需要三个步骤:
(1)建立层,包括建立连接关系和初始化其中一些变量参数;
(2)前向传输过程,给定输入并计算出相应的输出;
【Deep|Caffe——模型解析】(3)反向传播过程,进行反向梯度的计算,并把梯度保存在层结构中。
3、Nets Nets是由层Layers组成的,定义了输入、输出、网络各层,并将各层连接成一个有向无环图(DAG),由此定义了一个网络。一个典型的网络应该有数据输入,并且以一个代价函数作为输出,针对不同的任务,例如分类和重构,应选择不同的代价函数。
推荐阅读
- Machine|scikit-learn-分类模型评价标准
- AI|bert实现端到端继续预训练
- deep|Andrew Ng, deeplearning. Course2 week2,Optimization
- 数学|matlab三维山峰/山脉/山地曲面数据图
- Deep|Caffe——整体结构剖析
- Deep|Caffe——环境安装和配置(CPU)
- machine|LightGBM参数介绍
- Python|Python怎么控制浮点数保留几位小数
- statistic|隐马尔科夫模型(HMM)与线性动态系统(LDS)