Wenn ich TensorFlow zur Berechnung einer einfachen linearen Regression verwende, bekomme ich [Nan], einschließlich: w, b und Verlust.Warum bekomme ich [nan] mit TensorFlow, um eine einfache lineare Regression zu berechnen?
Hier ist mein Code:
import tensorflow as tf
w = tf.Variable(tf.zeros([1]), tf.float32)
b = tf.Variable(tf.zeros([1]), tf.float32)
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
liner = w*x+b
loss = tf.reduce_sum(tf.square(liner-y))
train = tf.train.GradientDescentOptimizer(1).minimize(loss)
sess = tf.Session()
x_data = [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000]
y_data = [265000, 324000, 340000, 412000, 436000, 490000, 574000, 585000, 680000]
sess.run(tf.global_variables_initializer())
for i in range(1000):
sess.run(train, {x: x_data, y: y_data})
nw, nb, nloss = sess.run([w, b, loss], {x: x_data, y: y_data})
print(nw, nb, nloss)
Ausgang:
[ nan] [ nan] nan
Process finished with exit code 0
Warum dies geschieht, und wie kann ich es beheben?
Wenn ich meine Daten durch 1000 teile, kann es funktionieren.Aber warum funktioniert es vorher nicht? –
Das liegt vor allem daran, dass die 1000 keine Informationen liefert und den Float mit Ihrer hohen Lernrate überlaufen lässt. Es zeigt auch in diesem Spielzeugbeispiel, wie es gut ist, Ihre Werte zu normalisieren. – user3217278