Модель линейной регрессии в тензорном потоке приводит к увеличению потерь - PullRequest
0 голосов
/ 14 декабря 2018

Я написал модель линейной регрессии с использованием тензорного потока.Код выглядит следующим образом:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt


# generate some data around line(add some noise)
train_X = np.linspace(0, 20, 100)
train_Y = 2.0 * train_X + 3.0 + np.random.randn(len(train_X))

# create tensorflow model
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
w = tf.Variable(0.0)
b = tf.Variable(0.0)

loss = tf.square(Y - w*X - b)
train = tf.train.GradientDescentOptimizer(0.001).minimize(loss)

# train
losses = []

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    for i in range(100):
        for x, y in zip(train_X, train_Y):
            _, l = sess.run([train, loss], feed_dict={X: x, Y: y})
        losses.append(l)

    w_value, b_value = sess.run([w, b])

# plot result
plt.subplot(2, 1, 1)
plt.title('linear gression')
plt.plot(train_X, train_Y, '+')
plt.plot(train_X, w_value*train_X+b_value)

plt.subplot(2, 1, 2)
plt.title('losses')
plt.plot(losses)

plt.show()

Я запустил этот сценарий несколько раз и получил две классные картинки, как показано ниже:

enter image description here

enter image description here

Я хотел бы знать, почему потеря увеличивается на одной картине и уменьшается на другой.

...