¿Cómo obtengo el valor actual de una variable?

Supongamos que tenemos una variable:

x = tf.Variable(...) 

Esta variable se puede actualizar durante el proceso de capacitación utilizando el método assign() .

¿Cuál es la mejor manera de obtener el valor actual de una variable?

Sé que podríamos usar esto:

 session.run(x) 

Pero me temo que esto desencadenaría toda una cadena de operaciones.

En Theano, podrías hacer

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

Estoy buscando lo equivalente en TensorFlow.

En general, session.run(x) evaluará solo los nodos que son necesarios para calcular x y nada más, por lo que debería ser relativamente barato si desea inspeccionar el valor de la variable.

Echa un vistazo a esta gran respuesta https://stackoverflow.com/a/33610914/5543198 para obtener más contexto.

La única forma de obtener el valor de la variable es ejecutándola en una session . En la FAQ está escrito que:

Un objeto Tensor es un controlador simbólico del resultado de una operación, pero en realidad no contiene los valores de la salida de la operación.

Entonces, el equivalente de TF sería:

 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. 

La parte con init = global_variables_initializer() es importante y se debe hacer para inicializar las variables.

Además, eche un vistazo a InteractiveSession si trabaja en IPython.

tf.Print puede simplificar tu vida!

tf.Print imprimirá el valor del tensor (es) que le indica que imprima en el momento en que se llama a la línea tf.Print en su código cuando se evalúa su código.

Así por ejemplo:

 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]

porque imprime el valor de x en el momento en que se encuentra la línea tf.Print . Si en cambio lo haces

 v = x.eval() print(v) 

conseguirás:

[2.0 4.0]

Porque te dará el valor final de x.