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