Caffe中的基本概念
Caffe模块包括4个部分
①Blob:Caffe中数据的封装,用于layer上流动
Blob通常是四维连续数组,通常表示为(n,k,w,h)或(n, c, w ,h),是基础的数据结构
可表示输入输出数据,也可表示参数数据
②Layer:输入出、输出层、神经网络层的抽象
Layer是网络基本单元,每一层类型定义了3种计算
- 初始化网络参数
- 前向传播
- 后向传播
③Net:神经网络的结构,将layer层叠关联起来
Net为无回路有向图
初始化函数
- 创建blobs和layers
- 调用layers和setup函数来初始化layers
④Solver:定义神经网络训练和测试参数
创建训练网络和测试网络
周期性的测试网络
调用前向和反向函数进行的迭代优化和参数更新
solver每轮迭代都会通过前向函数计算输出和损失(loss),还用反向传播来计算梯度
Caffe model
用于保存和恢复网络参数,后缀为.caffemodel
solver保存和恢复运行状态,后缀为.solverstate
Caffe源码解读
文件夹结构说明
核心代码文件夹
tools:保存的源码是用于生成二进制处理程序的,也是我们直接使用命令行训练时候的工具
include: Caffe的头文件.hpp,命名方式一般为网络名字开头
src: Caffe的源文件.cpp,.cu
src/caffe核心源码结构
Caffe配置文件
Caffe实战的必备文件
①solver.prototxt:配置模型训练的超参数
②train_val.prototxt:训练网络
③deploy.prototxt:测试网络