在tensorflow.contrib.slim.batch_norm中,math_ops.add(moving_mean, 0)
用于复制moving_mean
的值,后来为passed to nn.moments
。
如果我们直接将moving_mean
传递给nn.moments
会不会有问题?
是否有关于使用复制操作(tf.add(t, 0)
)的指导原则?
答案 0 :(得分:1)
问题在于,更新moving_mean的顺序可能会导致渐变使用moving_mean的更新版本,而不是用作shift的原始moving_mean。因此,为了确保在前向传递和后向传递中使用相同的值,我们制作一个显式副本。
答案 1 :(得分:0)
关于它的信息不多,但它可用于将张量参考转换为常规张量。将它们推入队列时它们的行为会有所不同(如果张量参考值改变了张量值)。您可以在此question中了解有关它的更多信息。