gpt4 book ai didi

python - tensorflow : optimizer gives nan as ouput

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:42 24 4
gpt4 key购买 nike

我正在运行一个非常简单的 tensorflow 程序

W = tf.Variable([.3],tf.float32)
b = tf.Variable([-.3],tf.float32)
x = tf.placeholder(tf.float32)

linear_model = W*x + b

y = tf.placeholder(tf.float32)

squared_error = tf.square(linear_model - y)

loss = tf.reduce_sum(squared_error)

optimizer = tf.train.GradientDescentOptimizer(0.1)

train = optimizer.minimize(loss)

init = tf.global_variables_initializer()

with tf.Session() as s:
file_writer = tf.summary.FileWriter('../../tfLogs/graph',s.graph)
s.run(init)
for i in range(1000):
s.run(train,{x:[1,2,3,4],y:[0,-1,-2,-3]})
print(s.run([W,b]))

这给了我

[数组([nan], dtype=float32), array([nan], dtype=float32)]

我做错了什么?

最佳答案

您正在使用 loss = tf.reduce_sum(squared_error) 而不是 reduce_mean。使用 reduce_sum,当您拥有更多数据时,您的损失会变得更大,即使对于这个小示例,它也意味着您的梯度大到足以导致您的模型发散。

当您的学习率太大时,可能会导致此类问题的其他原因。在这种情况下,您也可以通过将学习率从 0.1 更改为 0.01 来修复它,但如果您仍在使用 reduce_sum,当您添加更多点时它会再次中断。

关于python - tensorflow : optimizer gives nan as ouput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47103581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com