pymc.SymbolicRandomVariable.grad#

SymbolicRandomVariable.grad(inputs, output_grads)#

为每个输入变量构建梯度的图。

每个返回的 Variable 表示根据相对于每个输出的符号梯度计算出的相对于该输入的梯度。如果输出相对于某个输入不可微分,则此方法应返回该输入的 NullType 类型的实例。

使用[R5e7eff7d6a5d-1]_中给出的反向模式AD特性,对于表示`Op`实现的函数及其两个参数:math:A`和:math:`B`的:math:`C = f(A, B),由`inputs`中的`Variable`给出,Op.grad`返回的值表示某些标量输出项:math:`S_O`的:math:bar{A} equiv frac{partial S_O}{A}`和:math:bar{B}

\[\operatorname{Tr}\left(\bar{C}^\top dC\right) = \operatorname{Tr}\left(\bar{A}^\top dA\right) + \operatorname{Tr}\left(\bar{B}^\top dB\right)\]
参数:
输入

输入变量。

output_grads

输出变量的梯度。

返回:
grads

inputs 中每个 Variable 的梯度。

参考文献

[1]

Giles, Mike. 2008. “一个扩展的矩阵导数结果集合,用于前向和反向模式自动微分。”