
Caffe是一个深度学习的框架,主要用于神经网络深度学习
Caffe模型
Layers
Layer是Caffe模型和计算的基本单元,一系列layer和其他连接的集合组成了Net
每一个Layer都定义了三种运算- setup 在模型初始化时重置layer及其相互的连接
- forword 从Bottom层中接收Blob数据,进行计算后输出送入到top层中
- backword 给定相对于top层输出的梯度,计算其相对于输入的梯度,并传递到Bottom层
Blobs
Caffe使用Blobs结构來存储,交换,处理网络中的数据和导数信息,Blob是标准的数组结构
Nets
Caffe基于自己的模型,通过逐层定义Layer的方式定义整个网络,网络从数据输入层到损失层自下向上的定义整个模型
- Net::Init() 进行模型的初始化,创建Blobs和Layers,搭建整个无向图,调用layer的Setup函数
前传与后传
前传
Caffe组合每一层的计算以得到整个模型的计算函数
- Layer::Forward() 实现每一层的前传
- Net::Forward() 实现网络的前传
后传
Caffe反向组合每一层的梯度來计算整个网络的梯度
- Layer::Backward() 实现每一层的后传
- Net::Backward() 实现网络的后传
Loss
学习的目的是找到一个网络权重的集合,使得损失函数最小
损失通过网络的前向计算得到,某些层的输出可以作为损失函数
Solver
Solver通过协调Net的前向推断计算和反向梯度计算来对参数进行更新,从而达到减小loss的目的