In der Einführung habe ich mich gerade geändert
loss = tf.reduce_mean(tf.square(y - y_data))
zu
loss = tf.reduce_mean(tf.abs(y - y_data))
und das Modell kann nicht lernen, dass der Verlust mit der Zeit immer größer wurde. Warum?
quelle
In der Einführung habe ich mich gerade geändert
loss = tf.reduce_mean(tf.square(y - y_data))
zu
loss = tf.reduce_mean(tf.abs(y - y_data))
und das Modell kann nicht lernen, dass der Verlust mit der Zeit immer größer wurde. Warum?
Ich habe es versucht und das gleiche Ergebnis erzielt.
Weil der Gradient von .abs
für einen einfachen Optimierer schwieriger ist, den Minima zu folgen, hat der Gradient der absoluten Differenz im Gegensatz zur quadratischen Differenz, bei der der Gradient langsam gegen Null geht, eine feste Größe, die sich abrupt umkehrt, was dazu führt, dass der Optimierer um den herum schwingt Mindestpunkt. Der grundlegende Gradientenabstieg ist sehr empfindlich gegenüber der Größe des Gradienten und der Lernrate, die im Wesentlichen nur ein Multiplikator des Gradienten für Schrittgrößen ist.
Die einfachste Lösung besteht darin, die Lernrate zu reduzieren, z. B. die Linie zu ändern
optimizer = tf.train.GradientDescentOptimizer(0.5)
zu
optimizer = tf.train.GradientDescentOptimizer(0.05)
Spielen Sie auch mit verschiedenen Optimierern. Einige werden in der Lage sein, .abs
Verluste auf der Grundlage besser zu bewältigen .