【问题标题】:When should tf.add(t, 0) be used instead of tensor t directly?什么时候应该直接使用 tf.add(t, 0) 代替张量 t?
【发布时间】:2016-12-14 05:54:25
【问题描述】:

tensorflow.contrib.slim.batch_norm中,math_ops.add(moving_mean, 0)用于复制moving_mean的值,后续为passed to nn.moments

如果我们直接将moving_mean 传递给nn.moments 会不会有问题?

copy操作的使用有什么指导方针吗(tf.add(t, 0))?

【问题讨论】:

  • 这是在this commit 中添加的。效果是它复制了 t 的值,因此如果另一个工作人员并行修改了 t 的值,它将不受影响,并将使用旧值进行 tf.moments 计算。
  • @YaroslavBulatov 感谢您分享找到答案的方法。检查提交日志非常有帮助。

标签: python tensorflow


【解决方案1】:

问题在于,moving_mean 的更新顺序可能会导致梯度使用更新后的moving_mean,而不是原来的moving_mean 用作移位。因此,为了确保在前向传播和后向传播中使用相同的值,我们进行了显式复制。

【讨论】:

    【解决方案2】:

    关于它的信息不多,但它可以用来将张量引用转换为常规张量。当您将它们推送到队列时,它们的行为会有所不同(如果张量引用更改了张量的值)。您可以在question 中了解更多信息。

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 2013-02-25
      • 2010-11-17
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      相关资源
      最近更新 更多