1. 程式人生 > >caffe框架原始碼目錄結構

caffe框架原始碼目錄結構

先自頂向下捋清楚框架結構:

工程目錄下資料夾

data/       用於存放下載的訓練資料
docs/       幫助文件
examples/   程式碼樣例
matlab/     MATLAB介面檔案
python/     PYTHON介面檔案
models/     一些配置好的模型引數
scripts/    一些文件和資料會用到的指令碼
tools/     包括程式入口檔案就是caffe.cpp,計算影象均值(生成二進位制處理程式),裝置查詢,影象格式轉換,單獨的訓練和測試入口
include/    Caffe的實現程式碼的標頭檔案
src/        實現Caffe的原始檔

其中src/caffe/目錄下的資料夾作用如下(caffe的原始檔):

test/    用gtest測試caffe的程式碼
util/    資料轉換時用的一些程式碼。caffe速度快,很大程度得益於記憶體設計上的優化(blob資料結構採用proto)和對卷積的優化(部分與im2col相關)
proto/   即所謂的“Protobuf”,全稱“Google Protocol Buffer”,是一種資料儲存格式,幫助caffe提速,詳見本人上一篇帖子;
layers/  深度神經網路中的基本結構就是一層層互不相同的網路了,這個資料夾下的原始檔以及目前位置“src/caffe”中包含所有.cpp檔案就是caffe的核心目錄下的核心程式碼了。

src/caffe/目錄下的程式碼(包含對blob,layer,net,solver等的定義)作用如下:

blob[.cpp .h]             基本的資料結構Blob類
common[.cpp .h]           定義Caffe類
internal_thread[.cpp .h]  使用boost::thread執行緒庫
net[.cpp .h]              網路結構類Net
solver[.cpp .h]           優化方法類Solver
data_transformer[.cpp .h] 輸入資料的基本操作類DataTransformer
syncedmem[.cpp .h]        分配記憶體和釋放記憶體類CaffeMallocHost,用於同步GPU,CPU資料
layer[.cpp .h]            層類Layer
layers/           此資料夾下面的程式碼全部至少繼承了類Layer, 從layer_factory中註冊繼承