2017-12-11 3 views
0
#!/usr/bin/env python 
# vim: set noexpandtab tabstop=2 shiftwidth=2 softtabstop=-1 fileencoding=utf-8: 

import tensorflow as tf 

x = tf.placeholder(dtype=tf.float32, shape=[2]) 
loss = tf.reduce_sum(tf.square(x)) 
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss) 

init = tf.global_variables_initializer() 

with tf.Session() as sess: 
    session.run(init) 
    for i in range(10): 
     sess.run(train_op) 
     print x.eval(), loss.eval() 

Ich habe den obigen Code. Als ich es ausführte, bekam ich den folgenden Fehler. Ich möchte x optimieren. Ich verstehe nicht, warum es sagt, dass es keine zu optimierende Variable gibt. Könnte jemand mir helfen zu verstehen, was falsch ist und wie man GradientDescentOptimizer richtig verwendet? Vielen Dank.Wie verwende ich GradientDescentOptimizer?

$ ./main.py 
Traceback (most recent call last): 
    File "./main.py", line 8, in <module> 
    train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss) 
    File "/usr/local/lib/python2.7/site-packages/tensorflow/python/training/optimizer.py", line 343, in minimize 
    grad_loss=grad_loss) 
    File "/usr/local/lib/python2.7/site-packages/tensorflow/python/training/optimizer.py", line 408, in compute_gradients 
    raise ValueError("No variables to optimize.") 
ValueError: No variables to optimize. 
+1

x ist nur ein Platzhalter. Sie müssen Daten wie ein numpiges Array in x eingeben. – Moondra

+0

Sie geben im 'sess.run()' Teil keinen Wert für 'x' ein. Wenn es keinen Wert gibt, was würde der Gradientenabstieg optimieren? – Nain

Antwort

0

Wie es in dem Fehler sagt, Sie haben alle Variablen nicht definiert, die bei Trainingszeit in Ihrem Modell ausgebildet werden, ist x nur ein Platzhalter.