您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > caffeexamolecifar
Caffe结构:基本结构是由google的proto库生成的,基本流程就是定义一个配置文件,扩展名proto,调用proto库的编译器编译这个文件可以生成相应的类的c++代码。1.Blob结构:数据在网络结构中要经过正向反向传播的过程,Blob就是负责caffe中数据的存储,关联、以及数据操作。Blob是标准的array(4维数组),按照(Num,Channels,HeightandWeight)的顺序存储的。所以访问数据:index(n,k,h,w)在物理上相对应index((n*K+k)*H+h)+w数据:Number*Channels*Height*Width卷积权重:Output*input*Height*weight卷积偏置:output*1*1*1还存储cpu/gpu_diff:求导值2.Layer结构:核心结构,主要基本计算单元,也就是每一层的具体形式。包括convolvefilter、pools、innerproducts、loss等不同定义。layer定义三个核心计算:1).setup:初始化layer和itsconnections2).Forward:根据bottom计算top3).Backward:根据topoutput的gradient计算input的gradient,然后送到bottom。同时还会计算相对于parameter的gradient,并在内部存储。3.Net结构DAG,采用容器形式将多个Layer有序的放在一起,以datalayer开始,以losslayer结束。通过调用Net::init()初始化net,主要做两个工作:a.创建blobs和layers,调用layer::setup()b.做一些记录,如验证网络结构的有效性,输出一些log信息等。在net创建之后。则调用caffe::mode()使用cpu或者gpu进行计算。有update()接口(更新网络参数),也有自己的forward和backward,各掉调用一次就可以计算出网络的loss了。4.solver结构:类中包含Net指针,主要实现了训练模型参数所采用的优化算法,它所派生的类就可以对整个网络进行训练了。不同的训练模型训练方法通过重载ComputeUpdateValue()实现Update参数的核心功能。当训练整个网络,即运行caffe训练某个模型时,实际运行tools下的caffe.cpp中train()函数,而函数里面初始化一个solver对象。-运行下面函数:ComputeUpdateValue(),netupdate()Solver是控制网络的关键所在,具体功能:解析传递的prototxt、执行train、调用网络前向传播计算输出和loss、后向传播计算梯度、根据不同的优化方式计算参数。构造solve会根据命令行传递进来的参数来解析并恢复之前保存好的网络文件和权重等,恢复上次执行的loss等。二.网络实现方式Caffe是典型的功能(过程)计算方式,它首先按照每一个大功能(可视化、损失函数、非线性激励、数据层)将功能分类并针对部分功能实现相应的父类,再将具体的功能实现成子类,或者直接继承Layer类,从而形成了XXXLayer的形式。然后将不同的layer组合起来就成了net。三.Cifar101.初始化solver2.从net文件中创建训练net3.初始化netCifarConv1Pool1Relu1Con2Relu2Conv3Pool3Relu3Ip1Ip2Loss4.创建layer5.创建测试net6.初始化netCifarConv1Pool1Relu1Con2Relu2Conv3Pool3Relu3Ip1Ip2LossLabel1Accuracy7.创建testlayer8.进行训练9.第一阶段完成9.。。。初始化solver(还没看懂,为什么要继续??)10.初始化net。。。。。。结束:blob详细描述了layer与layer或net是怎样进行信息存储和通信的。Solver是Net的求解。Layer计算和连接:Layer是模型(model)的本质和计算的基本单元。Layer卷积滤波、pool、取内积、应用非线性、sigmoid和其它元素转换、归一化、载入数据,计算losses.Solver作用:Solver是Net的求解.(1)、优化bookkeeping、创建learning训练网络、对网络进行评估;(2)、调用forward/backward迭代优化和更新参数;(3)、定期评估测试网络;(4)、整个优化快照model和solver状态。Solver的每一次迭代执行:(1)、调用网络forward计算输出和loss;(2)、调用网络backward计算梯度;(3)、按照solver方法,采用渐变进行参数更新;(4)、按照学习率、历史和方法更新solver状态。通过以上执行来获得所有的weights从初始化到learnedmodel.
本文标题:caffeexamolecifar
链接地址:https://www.777doc.com/doc-2903038 .html