Mil*_*der 13
GATE_NONE:在两个向量'x'和'y'上采用matmul op的简单情况.让输出为L.现在L wrt x的梯度为y,L wrt y的梯度为xT(x转置).对于GATE_NONE,可能会发生渐变wrt x应用于修改x,甚至在y的梯度计算之前.现在,当计算梯度wrt y时,它将被计算等于修改的x,这是一个误差.当然,在这么简单的情况下它不会发生,但你可以想象它可能发生在更复杂/极端的情况下
GATE_OP:对于每个Op,确保在使用之前计算所有渐变.这可以防止Ops的竞争条件为渐变取决于输入的多个输入生成渐变.(你可以看到这是如何防止GATE_NONE的问题,虽然以一些并行的代价).
GATE_GRAPH:确保在使用任何变量之前计算所有变量的所有渐变.这提供了至少并行,但如果你想将它们中的任何之前处理所有的梯度可能是有用的.(使用情况的一个例子是按照全球标准在应用之前裁剪梯度)
在您链接的同一页面中,如果您向下滚动一点,它会显示:
Gate_gradients 参数,控制梯度应用期间的并行度