Caffe代码导读(0):路线图

简介:

【Caffe是什么?】

Caffe是一个深度学习框架,以代码整洁、可读性强、运行速度快著称。代码地址为:https://github.com/BVLC/caffe

【博客目的】

从接触Caffe、编译运行、阅读代码、修改代码一路走来,学习到不少内容,包括深度学习理论,卷积神经网络算法实现,数学库MKL,计算机视觉库OpenCV,C++模板类使用,CUDA程序编写……

本博客目的是为初学者清除代码阅读中的障碍,结合官网文档、融入个人理解、注重动手实践。

【如何开始】

在开始阅读Caffe代码之前,应该做好下面几件事:

(1)下载Caffe源码;

(2)配置开发环境(安装CUDA、OpenCV、boost、leveldb、lmdb、Python等,安装步骤参考http://tutorial.caffe.berkeleyvision.org/installation.html);

(3)编译;

(4)运行例子(如MNIST、CIFAR10、ImageNet等);

【路线图】

(1)Caffe源码阅读路线图应该是从CAFFE_ROOT/src/caffe/proto/caffe.proto开始,了解各类数据结构,主要是内存对象和序列化磁盘文件的一一对应关系,知道如何从磁盘Load一个对象到内存,以及如何将内存对象Save到磁盘,中间的过程实现都是由Protobuf自动完成的。

(2)第二步就是看头文件,不用急于去看cpp文件,先理解整个框架。Caffe中类数目众多,但脉络十分清晰。在Testing时,最外层的类是Caffe::Net,包含了多个Caffe::Layer对象,而Layer对象派生出神经网络多种不同层的类(DataLayer, ConvolutionLayer, InnerProductionLayer, AccurancyLayer等),每层会有相应的输入输出(Blob对象)以及层的参数(可选,Blob对象);Blob中包括了SyncedMemory对象,统一了CPU和GPU存储器。自顶向下去看这些类,结合理论知识很容易掌握使用方法。

(3)第三步就是有针对性地去看cpp和cu文件了。一般而言,Caffe框架不需要修改,只需要增加新的层实现即可。例如你想自己实现卷积层,只需从ConvolutionLayer派生一个新类MyConvolutionLayer,然后将几个虚函数改成自己的实现即可。所以这一阶段关注点在算法上,而不是源码本身。

(4)第四步就很自由了,可以编写各类工具,集成到Caffe内部。在CAFFE_ROOT/tools/下面有很多实用工具,可以根据需要修改。例如从训练好的模型中抽取参数进行可视化可以用Python结合matplot实现。

(5)接下来,如果想更深层次学习,最好是自己重新写一遍Caffe(时间充裕的情况)。跳出现有的框架,重新构建自己的框架,通过对比就能学到更多内容。


目录
相关文章
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习框架之争:全面解析TensorFlow与PyTorch在功能、易用性和适用场景上的比较,帮助你选择最适合项目的框架
【8月更文挑战第31天】在深度学习领域,选择合适的框架至关重要。本文通过开发图像识别系统的案例,对比了TensorFlow和PyTorch两大主流框架。TensorFlow由Google开发,功能强大,支持多种设备,适合大型项目和工业部署;PyTorch则由Facebook推出,强调灵活性和速度,尤其适用于研究和快速原型开发。通过具体示例代码展示各自特点,并分析其适用场景,帮助读者根据项目需求和个人偏好做出明智选择。
108 0
|
4月前
|
机器学习/深度学习 人工智能 前端开发
BladeDISC 深度学习编译器问题之BladeDISC计划发布版本如何解决
BladeDISC 深度学习编译器问题之BladeDISC计划发布版本如何解决
|
7月前
|
XML 编解码 算法
推荐一款嵌入式C的开源代码框架-tboox / tbox
推荐一款嵌入式C的开源代码框架-tboox / tbox
121 2
|
7月前
|
前端开发 JavaScript SEO
项目开发架构模型
项目开发架构模型
60 0
|
7月前
|
机器学习/深度学习 人工智能 算法框架/工具
极智AI | 谈谈caffe框架
大家好,我是极智视界,本文介绍一下 谈谈 caffe 框架。
139 0
|
7月前
|
机器学习/深度学习 人工智能 算法
极智AI | 谈谈tvm ansor
大家好,我是极智视界,本文分享了 谈谈 tvm ansor。希望我的分享能对你的学习有一点帮助。
141 0
|
并行计算 PyTorch 算法框架/工具
关于在安装caffe2环境中遇到的坑整理(欢迎入坑讨论)
关于在安装caffe2环境中遇到的坑整理(欢迎入坑讨论)
|
JavaScript 前端开发 搜索推荐
项目开发时对整个架构模型的选择
项目开发时对整个架构模型的选择是十分重要的,当然这是对公司而言,对于我们开发者自己而言,开心最重要,喜欢什么用什么~
116 0
|
机器学习/深度学习 算法 PyTorch
从零开始学Pytorch(十五)之数据增强
从零开始学Pytorch(十五)之数据增强
从零开始学Pytorch(十五)之数据增强
|
机器学习/深度学习 人工智能 算法框架/工具
DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略
DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略
DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略