caffe(全稱,Convolution Architecture For Feature Extraction) 的安裝之因此困難,在於其依賴了大量的第三方開源庫:編程
固然這些若是是放在 Linux 平臺下進行安轉的話,安裝是十分簡單的。網絡
caffe(torch) 是基於層(前向和後向)的設計思路:架構
Blob 模塊,實現了 Tensor(張量,能夠通俗地理解爲多維矩陣的意思) 的功能,保存數量和梯度值,其具備 4 個維度,分別是:優化
Layer 模塊,根據輸入(bottom)blob 計算輸出 (top)blob,同時保存權重/梯度(神經網絡,從圖的觀點其實表明着DAG,有向無環圖),ui
Net 模塊:由多個 layer 組成,實現 forward/backward 計算;google
Solver 模塊, 最優化模塊,利用梯度值更新權重,spa
ProtoBuffer:由 caffe 定義的模型,都須要有一個 solver.prototxt
文件,其中記錄了模型訓練所須要的超參,用 caffe 訓練時會首先讀取該文件,得到其中特定字段的數值,並據此設置內存中模型訓練時的超參數變量值;.net
using google::protobuf::io::FileInputStream;
const char* filename = "solver.prototxt";
int fid = open(filename, O_RDONLY);
FileInputStream* input = new FileInputStream(fid);
caffe::SolverParam solver_param;
google::protobuf::TextFormat::Parse(input, &solver_param);
BLAS:卷積神經網絡中用到的數學計算主要是矩陣向量的運算,caffe 中調用了 BLAS(Basic Linear Algebra Subprograms,基本線性代數子程序)中的相應方法,最經常使用的 BLAS 實現主要有如下幾種:設計
caffe 能夠選擇其中其中任意一種,經過對 Makefile.config 編譯文件的配置。Makefile.config 配置文件關於 BLAS 的設置以下所示:code
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas