Neural network 如何在torch中写入UPDATEGRADIPUT和ACCGRADPUT参数?
我知道这两个函数用于火炬的反向传播,接口如下Neural network 如何在torch中写入UPDATEGRADIPUT和ACCGRADPUT参数?,neural-network,deep-learning,backpropagation,torch,gradient-descent,Neural Network,Deep Learning,Backpropagation,Torch,Gradient Descent,我知道这两个函数用于火炬的反向传播,接口如下 updateGradInput(输入、梯度输出) accGradParameters(输入、gradOutput、缩放) 我对gradInput和gradioutput在层中的真正含义感到困惑。 假设网络的成本是C和一层L。层L的gradInput和gradioutput是否表示d_C/d_input_L和d_C/d_output_L 如果是,如何根据梯度输出计算梯度输入 此外,accGradParameters是否意味着累积d_C/d_Weig
updateGradInput(输入、梯度输出)
accGradParameters(输入、gradOutput、缩放)
我对gradInput
和gradioutput
在层中的真正含义感到困惑。
假设网络的成本是C
和一层L
。层L
的gradInput
和gradioutput
是否表示d_C/d_input_L
和d_C/d_output_L
如果是,如何根据梯度输出计算梯度输入
此外,accGradParameters
是否意味着累积d_C/d_Weight_L
和d_C/d_bias_L
?如果是,如何计算这些值
层L的gradInput
和gradioutput
表示d_C/d_输入
和d_C/d_输出
是的:
gradInput
=成本w.r.t层输入的导数
gradeoutput
=成本w.r.t层输出的导数
如何根据gradeoutput
从(警告:在该模式中,成本表示为L
=损失
,层f
),我们有:
对于LogSoftMax层上此类计算的具体分步示例,您可以参考
accGradParameters
是否意味着累积d\u C/d\u Weight\u L
和d\u C/d\u bias\u L
对。在torch/nn中命名为gradwight
和gradBias
如何计算这些值
同上。仍在使用上述博文中的公式:
除了雅可比矩阵没有相同的维度(更多细节请参见博客文章)。例如,对于线性层,这转化为:
这是层的输入和输出之间的外积。火炬:
以及:
这是梯度输出
。火炬:
在这两种情况下,scale
是一个在实践中用作学习率的比例因子
self.gradWeight:addr(scale, gradOutput, input)
self.gradBias:add(scale, gradOutput)