您的位置:首页 > Web前端

解剖caffe:Forward 和 Backward

2018-04-08 20:13 232 查看
Forward和Backward是一个网络的基本计算。

先考虑一个logistic regression分类器。前向通路使用输入计算输出,用于推理。计算模型表示的函数,前向通路从bottom到top。

数据

通过内积层传递到

, 然通过softmax函数传递到

以及softmax损失给



反向通路在损失函数处开始,并计算关于输出的梯度

。关于模型其余部分的梯度通过链式规则逐层计算。带有参数的层,比如INNER_PRODUCT层,在反向传播中计算关于参数的梯度

。这些计算紧跟在模型定义之后:Caffe计划并实施前向和后向传播
Net::Forward和Net::backward方法实施各自的传递,同时Layer::Forward和Layer::Backward计算每一步
每一层type由forward_{cpu, gpu}和backward_{cpu, gpu}方法根据计算模式来计算steps。由于约束或方便性,一层仅仅使用CPU或GPU中的一个。
Solver优化一个模型,通过首先前向调用生成输出和损失,然后反向调用生成模型梯度,接着把梯度吸收进权重更新来尝试最小化损失。解决Solver,Net, 和layer的分工使得caffe保持模块化和开发开放化。
对于caffe层类型前向传播和反向传播的细节,参考http://caffe.berkeleyvision.org/tutorial/layers.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  caffe