【caffe】caffe使用流程

【下战书!】

每日一点学习记录,能记多少就记多少。

哪怕是5分钟学习也可以!

不断!

 

【caffe使用流程】

准备数据(imag/LMDB)------> 定义网络(train.prototxt)------>训练参数(solver.prototxt)------> 训练/测试(acc/loss)

 

【caffe数据结构】

数据结构blob --------->  网络层layer ------------> 网络net

 

【caffe中的数据结构blod】

曾经有人说如果caffe是一辆车,那blod就是的轮子。

数据表示为四维张量(N,C,H,W),N是batch size大小,C是channel,H,W分别是图像的高和宽

【caffe】caffe使用流程_第1张图片

data_ :存储数据

diff_:存储梯度

shape_:blob_的尺度

count_:是所有数据数目,即N*C*H*W

 

【caffe中的网络层layer】

layer是基本计算单元,除了输入层没有bottom,输出层没有top,每一层都有bottom和top,分别串接前一层和后一层网络。

每一层layer,都有对应的layer_param,用于实现该层参数的配置。

【caffe】caffe使用流程_第2张图片

在layer中需要实现setup,forward,backward等函数

使用prototxt配置

包含网络层参数,如输入数据层的data_param,在prototxt进行定义

【caffe中的序列化】

root/src/caffe/proto/caffe.proto

proto是什么?是caffe中的序列化,配置和定义是在proto里面,使用protobuf协议进行数据序列化存储和解析,实际使用的时候会编译成与所定义的数据结构对应的代码,从而实现数据的读取,解析和存储。

【caffe】caffe使用流程_第3张图片

首先就是在proto中定义数据结构,然后使用protoc命令进行编译得到对应的.c和.h文件,然后在其他高层中去引用这写底层文件。

【caffe中的layerparameter示例】

【caffe】caffe使用流程_第4张图片

【caffe中的net】

net是由layer实例组成的完整的cnn模型

【caffe】caffe使用流程_第5张图片

【caffe】caffe使用流程_第6张图片

【caffe】caffe使用流程_第7张图片

对于 data这一层,我们可以看到,其类型是原始的图片输入,其中包括两个参数image_data_param和transform_param

等,这就是一层layer的定义。transform_param是预处里操作的参数,crop_size 就是输入的剪切大小。

你可能感兴趣的:(【caffe】caffe使用流程)