TensorFlow:GradientDescentOptimizer提供nan输出

时间:2018-09-01 20:41:08

标签: python tensorflow linear-regression gradient-descent

我正在尝试使用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。我搜索了解决方案,发现了这个link。 在我看来,这似乎不起作用。它仍然给出相同的结果。

另一方面,使用numpy导入的数据最多为4位正整数(如果有帮助的话)。请帮助调试问题。

0 个答案:

没有答案