Caffe中Layer和Net细解

  • Layer
    Layer是Caffe的基本计算单元,至少有一个输入Blob(Bottom Blob)和一个输出Blob(Top Blob),部分Layer带有权值(Weight)和偏置(Bias),有两个运算方向:前向传播(Forward)和反向传播(Backward),其中前向传播计算会对输入Blob进行某种处理(权值和偏置)得到输出Blob;而反向传播计算则对输出Blob的diff进行某种处理(权值和偏置)得到输入Blob的diff。
    所有的Pooling,Convolution,Nonlinear等操作都在这里实现。在Layer中input data用bottom表示output data用top表示。每一层定义了三种操作setup(Layer初始化), forward(正向传导,根据input计算output), backward(反向传导计算,根据output计算input的梯度)。forward和backward有GPU和CPU两个版本的实现。
    Layer类是一个虚基类,不能直接创建对象。Layer类中大部分函数并没有实现,只有虚函数,真正的实现都在派生类中。
    如果增加一个新的LayerParameter域,一定要更新下一个可用ID。
    Layer的重要成员变量: vector loss_ 。每一层又有一个loss值,只不多大多数Layer都是0,只有LossLayer才可能产生非0的loss。计算loss是会把所有层的loss_相加。

  • Net
    Net在Caffe中代表一个完整的CNN模型,它包含若干Layer实例。Net是一张图纸,对应的描述文件为*.prototxt。Net中既包含Layer对象,也包含Blob对象,其中Blob对象用于存放每个Layer输入/输出中间结果,Layer则根据Net描述对指定的输入Blob进行某些计算处理(卷积、下采样、全连接、非线性变换、计算代价函数等),输出结果放到指定的输出Blob中。输入Blob和输出Blob可能为同一个。所有的Layer和Blob对象都用名字区分,同名的Blob表示同一个Blob对象,同名的Layer表示同一个Layer对象,而Blob和Layer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值