2017-09-14 1 views
0

Je suis très nouveau sur TensorFlow et j'essaie de l'apprendre. J'ai copié un programme du site Web du tutoriel. Comme je l'ai modifié, il y a des problèmes avec le programme et je dois déboguer. Je cherche de l'aide pour comprendre comment je peux imprimer certaines valeurs telles que le coût et l'optimiseur. Je dois comprendre pour voir la valeur étant mise à jour dans chaque itération. Je comprends que les notes ne peuvent pas être imprimées mais je prends ce coût et les optimiseurs sont des entrées qui devraient être imprimables, n'est-ce pas?Instructions de débogage ou d'impression 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() 

Répondre

0

Dans votre exemple, cost et optimizer se réfèrent à tenseurs dans le graphique, pas entrées sur votre graphique. Le besoin d'être récupéré dans un appel session.run pour pouvoir imprimer leurs valeurs python. Par exemple, dans votre exemple, l'impression training_cost devrait être l'impression du coût. De même, si vous renvoyez la valeur optimizer de session.run(optimizer, ...), il doit retourner la valeur imprimable correcte.

Si vous êtes intéressé par le débogage et les valeurs d'impression Vérifions:

Hope qui aide!