Caffe框架作者:贾扬清
caffe框架参考:http://caffe.berkeleyvision.org/
caffe源码下载:https://github.com/BVLC/caffe
caffe上手参考:http://suanfazu.com/t/caffe/281
MakeFile文件内容梳理参考:http://blog.csdn.net/thystar/article/details/50837750
Caffe?
Caffe(Convolution Architecture For Feature Embedding),CNN工具箱,C++语言架构,支持CPU和GPU之间切换,支持Python和matlab接口调用。
Caffe优势:
上手快:模型与相应优化都是以文本形式而非代码形式给出。
速度快:能够运行最棒的模型与海量的数据。
模块化:方便扩展到新的任务和设置上。
开放性:公开的代码和参考模型用于再现。
社区好:可以通过BSD-2参与开发与讨论。
数据集的组织:
训练集(Training Set):用于训练网络;
验证集(Validation Set): 训练过程中测试网络准确率;
测试集(Test Set):测试训练最终模型的准确率。
CNN的网络配置文件:(以lenet为例)
lenet_train_test.prototxt:训练参数配置文件;
lenet_solver.prototxt:超参数配置文件。
两个初始学习训练集:
MINIST(手写字体识别数据集(handwritten digits)):http://yann.lecun.com/exdb/mnist/
CIFAR dataset(小图分类数据集):http://www.cs.toronto.edu/~kriz/cifar.html
Caffe的重要组件:
Blob:是数据传输的媒介,神经网络涉及到的输入输出数据,网络权重参数等等,其实都是转化为Blob数据结构来存储的。
Layer:是神经网络的基础单元,层与层间的数据节点、前后传递都在该数据结构中被实现,这里layers下实现了卷积层、激励层,池化层,全连接层等等“积木元件”,丰富度很高。
Net:是网络的整体搭建骨架,整合Layer中的层级机构组成网络。
Solver:是网络的求解优化策略,让你用各种“积木”搭建的网络能最适应当前的场景下的样本,如果做深度学习优化研究的话,可能会修改这个模块。
Caffe依赖包:(参考深度学习21天实战Caffe)
Protobuf:Google开发的一种可以实现内存与非易失存储介质(如硬盘文件)交换的协议接口。Caffe源码中使用了大量的Protocolbuffer作为权重和模型参数的载体。是开发者对参数管理的有效方式,便于模块集成,而且该工具可以跨语言进行数据结构传递。
Caffe源码阅读流程:(下面的图来自于寒小阳在小象学院的公开课)