我想打印当前变量渐变值以及所有变量的名称。
我使用以下代码:
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))
compute_gradients
返回:(梯度,变量)对的列表。
但我没有" GradValue" + VariableName格式符合预期,但只看到[-0.58050966]; [-0.33137798]
之类的值而没有变量名。如何打印变量名称?
答案 0 :(得分:4)
如您所述,compute_gradients
返回对列表(渐变,值)。要打印渐变的值,您需要在会话中run
。另一方面,变量的名称是静态的,所以你只需要这样做:
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)