Я пытаюсь выполнить простой пример линейной регрессии в Tensorflow, и кажется, что алгоритм обучения сходится к решению, но как только он приближается к решению, он начинает подпрыгивать и в конечном итоге взрывается.
Я передаю данные для строки y = 2x
, поэтому оптимизатор градиентного спуска должен легко сходиться к решению.
import tensorflow as tf
M = tf.Variable([0.4], dtype=tf.float32)
b = tf.Variable([-0.4], dtype=tf.float32)
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
linear_model = M * x + b
error = linear_model - y
loss = tf.square(error)
optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
for i in range(100):
sess.run(optimizer, {x: i, y: 2 * i})
print(sess.run([M, b]))
Вот результат.Я обвел часть, где это приближается к решению.Почему градиентный спуск нарушается, когда он приближается к решению, или я что-то не так делаю?
![enter image description here](https://i.stack.imgur.com/2xEJE.png)