python - 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 位正整数(如果有帮助的话)。请帮助调试问题。
解决方案
推荐阅读
- javascript - 试图让 momentjs 计算时间差
- java - Arraylist 和 Jframe
- excel - 如何删除文本字符串中单词的最后一个字符并在 Excel 中使用 VBA 插入另一个单元格?
- cassandra - Cassandra Nodetool Listsnapshots 输出不清楚
- python - 将三个列表合并为 1 个列表
- scala - 在 Scala 中使用 SinkFunction 创建我自己的接收器
- android - 带有 FTS4 的 Android 房间实体不会创建带有“rowid”列的表
- jenkins - 如何在 Jenkins 中限制整个管道
- ios - 如何使用 Azure DevOps 增加 xcode 项目的内部版本号
- ruby-on-rails - Facebook omniauth redirect_to user_steps_path