什么是" gate_gradients"张量流中的atribute在optimzer类中的minimize()函数?

时间:2017-04-04 17:17:23

标签: tensorflow deep-learning

2 个答案:

答案 0 :(得分:12)

GATE_NONE:在两个向量' x'上采用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:确保在使用任何一个变量之前计算所有变量的所有渐变。这提供了最小的并行性,但是如果你想在应用任何渐变之前处理所有渐变,这可能很有用。(用例的例子是在应用它们之前根据全局规范剪切渐变)

答案 1 :(得分:3)

在您链接的同一页面中,如果向下滚动一点,则会显示:

  

gate_gradients参数,用于控制渐变应用期间的并行度