TensorFlow: GradientDescentOptimizer Дает нанодисплей - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь сделать простую линейную регрессию, используя Tensorflow. Я пытаюсь использовать tf.train.GradientDescentOptimizer для минимизации функции среднего квадрата потерь. Я написал следующий код -

import tensorflow as tf
import numpy as np

data = np.genfromtxt('data.txt', delimiter=" ")
W = tf.Variable([.3], dtype=np.float32)
b = tf.Variable([-.3], dtype=np.float32)
X = tf.placeholder(dtype=np.float32)
Y = tf.placeholder(dtype=np.float32)

np.random.shuffle(data)
brkpt = int(0.8*len(data))
Xtrain, Xtest, Ytrain, Ytest = data[:brkpt,0], data[brkpt:,0], data[:brkpt, 1], data[brkpt:, 1]
n = len(Xtrain)
Ypred = W*X + b

loss = tf.reduce_mean(tf.square(Y-Ypred))

opt = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(loss)

initial = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(initial)
    for i in range(1000):
        sess.run(opt, feed_dict={X: Xtrain, Y: Ytrain})

    print(sess.run(loss, feed_dict={X:Xtest, Y:Ytest}))

В результате консоль напечатает nan. Я исследовал ввод dtype и нашел float64, что является правильным. Я искал решение и нашел эту ссылку . Похоже, это не работает в моем случае. Это все еще дает те же результаты.

В примечании, данные, импортированные с использованием numpy, содержат не более 4 цифр положительных целых чисел (если это помогает). Пожалуйста, помогите в устранении проблемы.

...