如何获取变量的当前值?
python
tensorflow
9
0

假设我们有一个变量:

x = tf.Variable(...)

可以在训练过程中使用assign()方法更新此变量。

获取变量当前值的最佳方法是什么?

我知道我们可以使用这个:

session.run(x)

但是我担心这会触发整个操作链。

在Theano,您可以做

y = theano.shared(...)
y_vals = y.get_value()

我正在TensorFlow中寻找相同的东西。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

tf.Print可以简化您的生活!

tf.Print将打印张量的值,告诉您在评估代码时在代码中调用tf.Print行的时刻打印张量。

因此,例如:

import tensorflow as tf
x = tf.Variable([1.0, 2.0])
x = tf.Print(x,[x])
x = 2* x

tf.initialize_all_variables()

sess = tf.Session()
sess.run()

[1.0 2.0]

因为它在tf.Print行显示时打印x的值。相反,如果你这样做

v = x.eval()
print(v)

你会得到:

[2.0 4.0]

因为它将给您x的最终值。

收藏
评论

通常, session.run(x)将只评估计算x所必需的节点,而不会评估其他任何节点,因此,如果要检查变量的值,它应该相对便宜。

看看这个很棒的答案https://stackoverflow.com/a/33610914/5543198了解更多背景信息。

收藏
评论

获取变量值的唯一方法是在session运行它。在常见问题解答中写道

Tensor对象是操作结果的符号句柄,但实际上并不保存操作输出的值。

因此,TF等效项为:

import tensorflow as tf

x = tf.Variable([1.0, 2.0])

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    v = sess.run(x)
    print(v)  # will show you your variable.

init = global_variables_initializer()很重要,应该进行初始化变量的操作。

另外,如果您使用IPython,请查看InteractiveSession

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题