首页 > 解决方案 > TensorFlow:GradientDescentOptimizer 给出 nan 输出

问题描述

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

标签: pythontensorflowlinear-regressiongradient-descent

解决方案


推荐阅读