【发布时间】:2018-09-21 11:45:09
【问题描述】:
给定一个包含两个变量 var1 和 var2 的 Tensorflow 图,我想将 var1 的值分配给 var2,反之亦然。一种简单的方法是(帖子末尾的 MWE)
var_tmp = var1.eval(session=sess)
sess.run([tf.assign(var1, var2])
sess.run([tf.assign(var2, var_tmp)])
但是,如果有几对这样的变量(例如模型参数和相关的指数加权移动平均线),这个方法很快就会变得相当慢,因为 run 每次调用 3 次,它实际上会造成内存泄漏(@ 987654321@)。另外,由于 var_tmp 放在 CPU 上,如果 var1 和 var2 在 GPU 上,由于数据传输,执行速度会更慢。
对于多对变量的情况,我想避免创建图形的整个副本来保存临时变量。
是否可以为一对变量定义一个操作来执行此操作?或者更好,多对?
MWE:
import tensorflow as tf
var1 = tf.Variable(1) # 'Variable:0'
var2 = tf.Variable(2) # 'Variable_1:0'
sess = tf.Session()
sess.run(tf.global_variables_initializer())
var_tmp = var1.eval(session=sess)
sess.run([tf.assign(var1, var2)])
sess.run([tf.assign(var2, var_tmp)])
print(var1.eval(session=sess))
print(var2.eval(session=sess))
【问题讨论】:
标签: tensorflow