caffe框架原始碼目錄結構
阿新 • • 發佈:2019-01-24
先自頂向下捋清楚框架結構:
工程目錄下資料夾
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中註冊繼承