zoukankan      html  css  js  c++  java
  • 怎样解读Caffe源代码

    怎样解读Caffe源代码

    导读

    Caffe是如今非常流行的深度学习库,能够提供高效的深度学习训练。该库是用C++编写。能够使用CUDA调用GPU进行加速。可是caffe内置的工具不一定能够满足用户的全部需求,所以阅读源代码并理解它,是非常有必要的。
    这篇博文不是想把Caffe的全部函数都讲一遍。由于Caffe的源代码非常大,一本书都不一定能够说清楚。

    这里我仅仅是说说该怎么去阅读源代码,给大家提供一个思路和建议。让大家能够高速把握caffe的总体。出了问题该往哪个方向去思考。


    caffe的编译。网上已有非常多教程,大家能够看看这篇

    Caffe的文件组织方式

    文件夹 功能
    caffe-master 根文件夹
    build 编译后的存放的文件夹
    data examples使用到的全部数据都放在这里了
    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打开caffeproject:

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

    这样就导入了整个project了,可是不要尝试使用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编译project。由于如今的版本号中make后的pycaffe经常出现找不到链接库。
    如今是看*.ipynb文件的时候了。里面详细解说了怎样使用caffe的python接口。出现故障的话就看源代码。建议使用pycharm或者Eclipse Java版。

  • 相关阅读:
    Caffe proto閱讀
    C++ 基本知識回顧
    Caffe 源碼閱讀(二) SyncedMemory.hpp
    Caffe 源碼閱讀(一) Blob.hpp
    Matlab
    python
    MxNet下训练alexnet(一)
    服务器自己用户名下编译gcc
    Using python to process Big Data
    23 October
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8565508.html
Copyright © 2011-2022 走看看