深度学习caffe数据结构(一)—— 数据结构概述

释放双眼,带上耳机,听听看~!

        caffe框架中,数据结构主要包括:Blob、Layer、Net、Solver。caffe的所有数据结构都在caffe根目录下的src/caffe/proto/caffe.proto文件中进行了描述。

        首先,Blob是caffe中基本的数据结构,如果把caffe比作一栋大楼,那么Blob就是每一块砖。通过Blob这些砖构建成一层一层的楼层Layer,每一层合在一起就构成了大楼Net。prototxt用来描述网络和求解器,它可以看做是大楼的图纸,而Solver则可以看做是大楼的建筑工艺。

1、Blob

        Blob是caffe的基本数据结构,它在内存中表示4维数组,维度由高到低为(num、channels、height、width)。这四个维度可以这样理解,它们用来描述一组图像,num可以理解为图像的个数,channels可以理解为颜色通道,比如RGB的每个通道,height和width则可以理解为图像的高和宽。Blob存储了包括神经元的激活值、参数、以及相应的梯度。在进行网络计算时,每层的输入输出都是需要通过Blob对象缓冲。

2、Layer

        代表神经网络的层,由各种各样的层来构成整个网络。一般一个图像或样本会从数据层中读进来,然后一层一层的往后传。所以每个Layer至少有一个输入Blob和一个输出Blob,部分Layer带有权值和偏置项,有两个运算方向:前向传播和反向传播,其中前向传播计算会对输入Blob进行某种处理(有权值和偏置项的Layer会利用这些对输入进行处理),得到输出Blob;而反向传播计算则对输出Blob的diff进行某种处理,得到输入Blob的diff(有权值和偏置项的Layer会计算权值Blob、偏置项Blob的diff)。

3、Net

        Net在caffe中代表一个完整的CNN模型,它包含若干Layer实例。它相当于一张图纸,在caffe中通过.prototxt文件进行描述。通过对.prototxt文件的研究,发现Net就是若干Layer的集合体。

4、Slover

        Solver是按solver.prototxt的参数定义对Net进行训练,首先会初始化一个TrainNet和一个TestNet,然后其中的Step函数会对网络不断进行迭代,主要就是两个步骤反复迭代:(1)不断利用ComputeUpdateValue计算迭代相关参数。(2)调用Net的Update函数对整个网络进行更新。迭代中的训练日志中的大部分输出也是在这里输出的。

        本文只对caffe的数据结构进行简单介绍,在接下来的文章中,我们将会对caffe数据结构进行代码级的详细介绍,逐层揭开caffe的神秘面纱。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

MySQL到MongoDB的数据同步方法!

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索