Gu *_*ang 2 backpropagation neural-network gradient-descent deep-learning torch
我知道这两个功能是火炬的向后传播和界面如下
updateGradInput(input, gradOutput)
accGradParameters(input, gradOutput, scale)
我感到困惑的是什么gradInput,并gradOutput真正在层意思.假设网络的成本是C一层L.难道gradInput和gradOutput层的L意思是d_C/d_input_L和d_C/d_output_L?
如果是这样,如何计算gradInput符合gradOutput?
而且,是否accGradParameters意味着积累d_C/d_Weight_L和d_C/d_bias_L?如果是这样,如何计算这些值?
做
gradInput和gradOutput层L意味着d_C/d_input_L和d_C/d_output_L
是:
gradInput =成本wrt层输入的导数,gradOutput =成本wrt层输出的导数.如何计算
gradInput根据gradOutput
从深度学习的构建块调整模式(警告:在此模式中,成本表示为L= Loss,以及层f)我们具有:
有关LogSoftMax层上此类计算的具体分步示例,您可以参考此答案.
确实
accGradParameters意味着积累d_C/d_Weight_L和d_C/d_bias_L
是.命名gradWeight并gradBias在火炬/ nn.
如何计算这些值?
与上面类似.仍使用上述博文中的公式:
除了jacobian具有不同的维度(有关更多详细信息,请参阅博客文章).例如,对于线性图层,这转换为:
这是图层输入和gradOutput.之间的外部产品.在火炬,我们有:
self.gradWeight:addr(scale, gradOutput, input)
Run Code Online (Sandbox Code Playgroud)
和:
这是gradOutput.在火炬,我们有:
self.gradBias:add(scale, gradOutput)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下scale都是在实践中用作学习率的比例因子.
| 归档时间: |
|
| 查看次数: |
1929 次 |
| 最近记录: |