39

Suppose we have a variable:

x = tf.Variable(...)

This variable can be updated during the training process using the assign() method.

What is the best way to get the current value of a variable?

I know we could use this:

session.run(x)

But I'm afraid this would trigger a whole chain of operations.

In Theano, you could just do

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

I'm looking for the equivalent thing in TensorFlow.

4

4 回答 4

39

获取变量值的唯一方法是在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 。

于 2015-11-12T20:35:15.960 回答
23

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

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

于 2015-11-12T19:59:01.920 回答
16

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]

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

v = x.eval()
print(v)

你会得到:

[2.0 4.0]

因为它会给你x的最终值。

于 2016-10-28T11:36:32.803 回答
1

当他们取消tf.Variable()tensorflow 2.0.0

如果你想从 a 中提取值tensor(ie "net"),你可以使用这个,

net.[tf.newaxis,:,:].numpy().
于 2019-07-09T08:32:08.843 回答