如何在TensorFlow中使用变量名称打印当前变量渐变值?

如何在TensorFlow中使用变量名称打印当前变量渐变值?,tensorflow,Tensorflow,我想打印当前变量梯度值以及所有变量的名称 我正在使用以下代码: import tensorflow as tf import numpy as np x_data = np.random.rand(100).astype(np.float32) y_data = x_data * 0.1 + 0.3 W = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name = "Wvar") b = tf.Variable(tf.zeros([1]),

我想打印当前变量梯度值以及所有变量的名称

我正在使用以下代码:

import tensorflow as tf
import numpy as np

x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3

W = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name = "Wvar")
b = tf.Variable(tf.zeros([1]), name = "Bvar")
y = W * x_data + b

loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
grads_and_vars = optimizer.compute_gradients(loss)

train = optimizer.apply_gradients(grads_and_vars)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

for step in range(201):
     sess.run(train)
     if step % 50 == 0:
       for gv in grads_and_vars:
            print(str(sess.run(gv[0])) + " - " + str(sess.run(gv[1].name)))
            #print(step, sess.run(W), sess.run(b))
计算梯度

返回(梯度、变量)对的列表


但我没有得到预期的“GradValue”+VariableName格式,只是看到了像
[-0.58050966]这样的值;[-0.33137798]
不带变量名。如何打印变量名称?

正如您所指出的,
compute\u gradients
返回对列表(gradient,value)。要打印渐变值,您需要在会话中运行它。另一方面,变量的名称是静态的,因此您只需执行以下操作:

for step in range(201):
     sess.run(train)
     if step % 50 == 0:
       for gv in grads_and_vars:
            print(str(sess.run(gv[0])) + " - " + gv[1].name)

谢谢你提供的信息,但是如果没有更多的细节,调试是相当困难的。顺便说一句,这个函数更改了tensorflow中的名称,因为我给它写了答案。