解剖caffe:Forward 和 Backward

Forward和Backward是一个网络的基本计算。

解剖caffe:Forward 和 Backward_第1张图片

先考虑一个logistic regression分类器。

前向通路使用输入计算输出,用于推理。计算模型表示的函数,前向通路从bottom到top。

数据通过内积层传递到, 然通过softmax函数传递到以及softmax损失给

解剖caffe:Forward 和 Backward_第2张图片

反向通路在损失函数处开始,并计算关于输出的梯度。关于模型其余部分的梯度通过链式规则逐层计算。带有参数的层,比如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,深度学习)