我正在尝试使用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位正整数(如果有帮助的话)。请帮助调试问题。