Debugging Tensorflow调试或打印语句

Debugging Tensorflow调试或打印语句,debugging,printing,tensorflow,Debugging,Printing,Tensorflow,我对TensorFlow很陌生,正在努力学习它。我从教程网站上复制了一个程序。当我修改它时,程序出现了问题,我必须进行调试。我正在寻求帮助,以了解如何打印某些值,如成本和优化器。我必须弄清楚每次迭代中更新的值。我知道笔记不能打印,但我认为成本和优化器是可以打印的输入,对吗 plt.ion() n_observations = 100 xs = np.linspace(-3, 3, n_observations) ys = np.sin(xs) + np.random.uniform(-0.5,

我对TensorFlow很陌生,正在努力学习它。我从教程网站上复制了一个程序。当我修改它时,程序出现了问题,我必须进行调试。我正在寻求帮助,以了解如何打印某些值,如成本和优化器。我必须弄清楚每次迭代中更新的值。我知道笔记不能打印,但我认为成本和优化器是可以打印的输入,对吗

plt.ion()
n_observations = 100
xs = np.linspace(-3, 3, n_observations)
ys = np.sin(xs) + np.random.uniform(-0.5, 0.5, n_observations)

X = tf.placeholder(tf.float32)

Y = tf.placeholder(tf.float32)

Y_pred = tf.Variable(tf.random_normal([1]), name='bias')
for pow_i in range(1, 5):

    W = tf.Variable(tf.random_normal([1]), name='weight_%d' % pow_i)
    Y_pred = tf.add(tf.multiply(tf.pow(X, pow_i), W), Y_pred)

cost = tf.reduce_sum(tf.pow(Y_pred - Y, 2)) / (n_observations - 1)
d = tf.Print(cost, [cost, 2.0], message="Value of cost id:")

learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

n_epochs = 10
with tf.Session() as sess:

    sess.run(tf.global_variables_initializer())
    prev_training_cost = 0.0
    for epoch_i in range(n_epochs):


    for (x, y) in zip(xs, ys):
    print("Msg2 x, y ", x, y, cost);
    sess.run(optimizer, feed_dict={X: x, Y: y})
    sess.run(d)
    print("Msg3 x, y ttt ", x, y, optimizer);

        training_cost = sess.run(
            cost, feed_dict={X: xs, Y: ys})
        print(training_cost)
        print("Msg3 cost, xs ys", cost, xs, ys);

        if epoch_i % 100 == 0:
            ax.plot(xs, Y_pred.eval(
                feed_dict={X: xs}, session=sess),
                'k', alpha=epoch_i / n_epochs)
        fig.show()
        #plt.draw()
    # Allow the training to quit if we've reached a minimum
    if np.abs(prev_training_cost - training_cost) < 0.001:
        break
    prev_training_cost = training_cost

ax.set_ylim([-3, 3])
fig.show()
plt.waitforbuttonpress()
plt.ion()
n_观测值=100
xs=np.linspace(-3,3,n_观测值)
ys=np.sin(xs)+np.random.uniform(-0.5,0.5,n_观测值)
X=tf.placeholder(tf.float32)
Y=tf.placeholder(tf.float32)
Y_pred=tf.Variable(tf.random_normal([1]),name='bias')
对于范围(1,5)内的功率i:
W=tf.Variable(tf.random\u normal([1]),name='weight'%d'%pow\u i)
Y_pred=tf.add(tf.multiply(tf.pow(X,pow_i),W),Y_pred)
成本=tf.减少总和(tf.功率(Y_pred-Y,2))/(n_观测值-1)
d=tf.Print(成本,[cost,2.0],message=“成本id的值:”)
学习率=0.01
优化器=tf.train.GradientDescentOptimizer(学习率)。最小化(成本)
n_时代=10
使用tf.Session()作为sess:
sess.run(tf.global\u variables\u initializer())
上一次培训成本=0.0
对于范围内的历元i(n历元):
对于zip(xs,ys)中的(x,y):
打印(“Msg2 x,y”,x,y,成本);
run(优化器,feed_dict={X:X,Y:Y})
sess.run(d)
打印(“Msg3 x,y ttt”,x,y,优化器);
培训成本=sess.run(
成本,feed_dict={X:xs,Y:ys})
打印(培训成本)
打印(“Msg3成本,xs-ys”,成本,xs-ys);
如果历元i%100==0:
ax.绘图(xs,Y_pred.eval(
feed_dict={X:xs},session=sess),
“k',alpha=历元(i/n历元)
图2(图3)
#plt.draw()
#如果达到最低限度,允许停止培训
如果np.abs(前期培训成本-培训成本)<0.001:
打破
上一次培训成本=培训成本
ax.set_ylim([-3,3])
图2(图3)
plt.waitforbuttonpress()

在您的示例中,
成本
优化器
指的是图形中的张量,而不是图形的输入。需要在
会话中获取。运行
调用以打印其python值。例如,在您的示例中,打印
training\u cost
应该是打印成本。类似地,如果您从
session.run(optimizer,…)
返回
optimizer
的值,则它应该返回正确的可打印值

如果您对调试和打印值感兴趣,请查看:

希望有帮助