在numpy中,我可以使用numpy.copy创建变量的副本.是否有类似的方法,我可以用来在TensorFlow中创建Tensor的副本?
dga*_*dga 31
您询问了如何复制标题中的变量,但如何复制问题中的张量.让我们看看不同的可能答案.
(1)您想要创建一个具有相同值的张量,该值目前存储在我们将调用的变量中var.
tensor = tf.identity(var)
Run Code Online (Sandbox Code Playgroud)
但请记住,'tensor'是一个图形节点,在评估时会有该值,并且无论何时评估它,它都会获取当前值var.您可以使用控制流操作,例如with_dependencies()查看变量更新的顺序和标识的时间.
(2)您想要创建另一个变量并将其值设置为当前存储在变量中的值:
import tensorflow as tf
var = tf.Variable(0.9)
var2 = tf.Variable(0.0)
copy_first_variable = var2.assign(var)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
print sess.run(var2)
sess.run(copy_first_variable)
print sess.run(var2)
Run Code Online (Sandbox Code Playgroud)
(3)你想要定义一个变量并将它的起始值设置为你已经初始化变量的相同的东西(这是nivwu ..以上的答案):
var2 = tf.Variable(var.initialized_value())
Run Code Online (Sandbox Code Playgroud)
var2你打电话时会被初始化tf.initialize_all_variables.在初始化图形并开始运行之后,您无法使用它来复制var.
您可以通过几种方式完成此操作.
v2 = tf.Variable(v1)v2 = tf.identity(v1)我认为这是一种正确的方法.这是一个代码示例:
import tensorflow as tf
v1 = tf.Variable([[1, 2], [3, 4]])
v_copy1 = tf.Variable(v1)
v_copy2 = tf.identity(v1)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
a, b = sess.run([v_copy1, v_copy2])
sess.close()
print a
print b
Run Code Online (Sandbox Code Playgroud)
他们两个都会打印相同的张量.
执行深层复制
copied_variable = tf.Variable(source_variable.initialized_value())
Run Code Online (Sandbox Code Playgroud)
它还可以正确地处理初始化,即
tf.intialize_all_variables()
Run Code Online (Sandbox Code Playgroud)
会先正确初始化source_variable,然后将该值复制到copyed_variable
| 归档时间: |
|
| 查看次数: |
33694 次 |
| 最近记录: |