如何解读Caffe源码

如何解读Caffe源码

导读

Caffe是现在非常流行的深度学习库,能够提供高效的深度学习训练。该库是用C++编写,能够使用CUDA调用GPU进行加速。但是caffe内置的工具不一定能够满足用户的所有需求,所以阅读源码并理解它,是很有必要的。
这篇博文不是想把Caffe的所有函数都讲一遍,因为Caffe的源码很大,一本书都不一定能够说清楚。这里我只是说说该怎么去阅读源码,给大家提供一个思路和建议,让大家能够快速把握caffe的整体,出了问题该往哪个方向去思考。
caffe的编译,网上已有很多教程,大家可以看看这篇

Caffe的文件组织方式

目录功能
caffe-master根目录
build编译后的存放的目录
dataexamples使用到的所有数据都放在这里了
docs这里有很多讲解caffe的文件,新手可以把这里的东西好好看看。.md文件推荐使用atom软件进行查看
examples这里是放例子的地方,可以借着这些例子好好理解下该怎么用caffe。特别是mnist
include这里存放着caffe的所有头文件。阅读头文件可以让人很快地把握全局而不考虑具体实现
matlab和 matcaffe有关的文件
models这里有一些如何写deploy文件的示例,可以用在训练完成后发布你的模型
python和pycaffe有关的文件都放在这里了。在python中使用caffe时,需要把该路径给加上
scripts一些帮助使用caffe的脚本
src头文件的实现都在这里
tools一些常用的工具的源代码,编译后的可执行文件在build/tools中

理解示例

examples里面由好几个caffe的示例,打开mnist看下,里面由很多文件,我们先看readme.md。里面很好的讲解了如何运行这个模型,以及各个参数代表什么意思。读懂了这个的话,基本上你就会运行示例了。其他的示例也可以照这样学习。值得一提的是,学习这个部分时,可以结合docs里面的讲解,还有一些 *.ipynb。如何查看ipynb就不说了,自己查资料。
示例运行得差不多,你就可以琢磨下如何使用deploy文件了。

理解caffe源码

为了更好的阅读代码,我建议按如下步骤使用Eclipse打开caffe工程:

  • 配置下java,因为Eclipse需要java环境
  • 下载eclipse cpp版
  • 打开Eclipse,在菜单栏File->import->c/c++->Existing code as Autotools project,按next,然后在browse中找到caffe-master,进入caffe-master后按确认。

这样就导入了整个工程了,但是不要尝试使用Eclipse来编译caffe,因为基本上都编译不通过。

blob、layer、net、solver这几个是要好好阅读的(头文件以及实现),可以结合这docs里面的文件看。看懂了这几个文件,那么你基本上就大概知道caffe是如何运行的了。

但是你可能在运行示例时很纳闷,每个层那么多的参数,我该怎么知道它是什么意思。别担心,所有的这些信息都可以在src/caffe/proto/caffe.proto中找到。看不懂的话,可以查一下protobuf的使用。

上面的如果都看懂了,那就可以好好研究下src/caffe/layers里面的文件了,把mnist用到的那些层好好看看它是怎么实现的,可以先看cpp,有cuda基础的就看看cu。

添加自己的层

添加自己的caffe层需要有一定的c++基础,至少要明白什么是继承,什么是虚函数,以及多线程的基本概念。可以选择继承一个和自己功能最相近又满足继承关系的层。
具体的步骤可以参考下这篇博文。

使用pycaffe

使用pycaffe的话,我推荐使用cmake而不是直接的make编译工程,因为现在的版本中make后的pycaffe经常出现找不到链接库。
现在是看*.ipynb文件的时候了,里面详细讲解了如何使用caffe的python接口。出现问题的话就看源代码。建议使用pycharm或者Eclipse Java版。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值