caffe 源码 阅读 指导意见

Caffe Source Code Analysis
https://buptldy.github.io/2016/10/09/2016-10-09-Caffe_Code/
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
其中第一个参数build/tools/caffe是Caffe框架的主要框架,由tools/caffe.cpp文件编译而来,第二个参数train表示是要训练网络,第三个参数是 solver的protobuf描述文件。在Caffe中,网络模型的描述及其求解都是通过 protobuf 定义的,并不需要通过敲代码来实现。同时,模型的参数也是通过 protobuf 实现加载和存储,包括 CPU 与 GPU 之间的无缝切换,都是通过配置来实现的,不需要通过硬编码的方式实现,有关
protobuf的具体内容可参考这篇博文:http://alanse7en.github.io/caffedai-ma-jie-xi-2/。
看了文字看的一头雾水 不会的太多 想哭
Caffe代码解析(1-4) xuesong
这个人的讲解 跨度性很大 看起来很费劲
https://imbinwang.github.io/research/
这个人貌似很高大上
Caffe源码解析之Layer
层的输入输出结构,图示是这样的,
在这里插入图片描述
layer_img

每种类型的layer需要定义三种关键操作LayerSetUp, Forward, Backward:

LayerSetUp: 网络构建时初始化层和层的连接
Forward: 网络数据前向传递,给定bottom输入数据,计算输出到top
Backward: 网络误差反向传递,给定top的梯度,计算bottom的梯度并存储到bottom blob
实现细节
Caffe中与Layer相关的头文件有7个,

layer.hpp: 父类Layer,定义所有layer的基本接口。
data_layers.hpp: 继承自父类Layer,定义与输入数据操作相关的子Layer,例如DataLayer,HDF5DataLayer和ImageDataLayer等。
vision_layers.hpp: 继承自父类Layer,定义与特征表达相关的子Layer,例如ConvolutionLayer,PoolingLayer和LRNLayer等。
neuron_layers.hpp: 继承自父类Layer,定义与非线性变换相关的子Layer,例如ReLULayer,TanHLayer和SigmoidLayer等。
loss_layers.hpp: 继承自父类Layer,定义与输出误差计算相关的子Layer,例如EuclideanLossLayer,SoftmaxWithLossLayer和HingeLossLayer等。
common_layers.hpp: 继承自父类Layer,定义与中间结果数据变形、逐元素操作相关的子Layer,例如ConcatLayer,InnerProductLayer和SoftmaxLayer等。
layer_factory.hpp: Layer工厂模式类,负责维护现有可用layer和相应layer构造方法的映射表。

来源: https://imbinwang.github.io/research/inside-caffe-code-layer
后面再详细的看吧,表示看不懂的地方太多了!
https://www.cnblogs.com/louyihang-loves-baiyan/p/5149628.html
Caffe源码解析1:Blob

这篇文章的确超赞,适合初学者

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/84426678