in optim.py [0:0]
def polyak(params, beta):
#params = tf.trainable_variables()
ema = tf.train.ExponentialMovingAverage(decay=beta, zero_debias=True)
avg_op = tf.group(ema.apply(params))
# Swapping op
updates = []
for i in range(len(params)):
p = params[i]
avg = ema.average(p)
tmp = 0. + avg * 1.
with tf.control_dependencies([tmp]):
update1 = avg.assign(p)
with tf.control_dependencies([update1]):
update2 = p.assign(tmp)
updates += [update1, update2]
swap_op = tf.group(*updates)
return avg_op, swap_op, ema