¿Cómo obtengo el gradiente de la pérdida en una variable TensorFlow?


La característica que busco es poder decir cuál es el gradiente de una variable dada con respecto a mi función de error dados algunos datos.

Una forma de hacer esto sería ver cuánto ha cambiado la variable después de una llamada a train, pero obviamente eso puede variar enormemente en función del algoritmo de aprendizaje (por ejemplo, sería casi imposible decirlo con algo como RProp) y simplemente no es muy limpio.

Gracias de antemano.

 34
Author: mrry, 2016-02-05

1 answers

El tf.gradients() la función le permite calcular el gradiente simbólico de un tensor con respecto a uno o más tensores, incluidas las variables. Considere el siguiente ejemplo simple:

data = tf.placeholder(tf.float32)
var = tf.Variable(...)              # Must be a tf.float32 or tf.float64 variable.
loss = some_function_of(var, data)  # some_function_of() returns a `Tensor`.

var_grad = tf.gradients(loss, [var])[0]

Luego puede usar este gradiente simbólico para evaluar el gradiente en algún punto específico (datos):

sess = tf.Session()

var_grad_val = sess.run(var_grad, feed_dict={data: ...})
 46
Author: mrry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-13 13:46:29