怎樣解讀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版。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM