-
Net 基本介绍 网络通过组成和自微分共同定义一个函数及其梯度。 网络是一些Layer组成的DAG,也就是有向无环图,在caffe中通常由prototxt定义. 比如 1name: "LogReg"2layer {3 name: "mnist"4 type: "Data"5 top: "data"6 top: "label"7 data_param {8 source: "input_leveldb"9 batch_size: 6410 }11}12layer {13 name: "ip"14 type: …
Read More -
layer 整体介绍 layer是模型计算的基本单元 类似于pytorch或者其他深度学习框架的op layer中的数据流向为,输入若干个blob,称之为"bottom blob",然后经过layer的计算,输出若干个blob,称之为"top blob" 也就是数据是从“bottom”流向“top” layer通常会进行两种计算,forward和backward forward是指,根据bottom blob计算得到top blob backward是指,根据top blob的结果和参数值计算得到的gradient,回传给前面的layer. layer 实现细节 layer作为一个base …
Read More -
迫于生计,开始看caffe代码。 会侧重于分析inference部分。 blob 整体介绍 blob的含义及目的 blob在逻辑上表示的就是所谓的tensor,blob是tensor在caffe中的叫法。 在框架层面上,blob的意义在于对数据进行封装,提供统一的接口。 这里的数据包含训练/inference时用的数据,也包含模型参数,导数等数据。 深度学习离不开在GPU上的计算。 blob对数据的封装使得用户不必关心和cuda有关的数据传输细节。 blob的表示 对于图像数据,blob通常为4-dim,也就是N*C*H*W 其中N表示number,也就是batch_num C表示channel H表示height W表示width …
Read More -
接触Eigen的原因是最近在看caffe/caffe2源码,caffe2中使用了Eigen库. Eigen 是一个基于C++模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用,非常方便。对于Linux用户,只需要把头文件放到/usr/include 下即可此外,Eigen的接口清晰,稳定高效。 之后会更新一些,Eigen中我使用过的函数. ubuntu14.04LTS 下使用方式: sudo apt-get install libeigen3-dev cd /usr/include/eigen3 sudo cp -R Eigen /usr/include 然后尝试运行如下代码,直接编译即可.如果可以正常运行,表 …
Read More