Caffe Tutorial(Forward / backward:the essential computations of layered compositional models)

二、forward and backward

前向forward和反向backward过程是网络的基本计算过程。

考虑一个简化的LR分类器

正向传递计算给定推理输入的输出。 在前进中,Caffe组成每层的计算来计算由模型表示的“函数”。 这个过程从下到上。

数据x通过g(x)的内积层,然后通过h(g(x))和softmax损耗的softmax给出fW(x)。

反向传播过程计算给定学习损失的梯度。向后通过计算给定学习损失的梯度。这是反向传播。这个过程从上到下。

反向通道从损失开始,并计算相对于输出的梯度∂f/∂h。通过链式规则逐层计算相对于模型其余部分的梯度。带有参数的图层(如INNER_PRODUCT图层)根据参数计算梯度在后向传播过程中的梯度。

这些计算从定义模型开始:Caffe计划并执行前向和反向传播过程。

    Net :: Forward()和Net :: Backward()方法执行相应的传递,而Layer :: Forward()和Layer :: Backward()计算每个步骤。

    每种类型都有forward_ {cpu,gpu}()和backward_ {cpu,gpu}()方法根据计算模式计算其步骤。由于约束或方便,层可能只实现CPU或GPU模式。

Solver首先通过前向调用以产生输出和损失,然后反向调用以生成模型的梯度,然后将梯度结合到试图最小化损失的权重更新中来优化模型。Solver,Net和Layer之间的分工保持了Caffe的模块化和开放性。

有关Caffe图层类型向前和向后步骤的详细信息,请参阅图层目录。

猜你喜欢

转载自blog.csdn.net/littlestudent12/article/details/80843439