Tensorflow 更改数据并获得有线输出(简单线性回归)

Tensorflow 更改数据并获得有线输出(简单线性回归),tensorflow,linear-regression,Tensorflow,Linear Regression,这是一个非常简单的示例,它就像家庭作业一样。代码如下: x_data = np.array([0.35252703, 0.60587817, 0.8906856, 0.4813087, 0.53391305, 0.27751151]) y_data = x_data * 10 b = tf.Variable(0.) k = tf.Variable(0.) y = k * x_data + b loss = tf.reduce_mean(tf.square(y_data - y)) optim

这是一个非常简单的示例,它就像家庭作业一样。代码如下:

x_data = np.array([0.35252703, 0.60587817, 0.8906856, 0.4813087, 0.53391305, 0.27751151])
y_data = x_data * 10

b = tf.Variable(0.)
k = tf.Variable(0.)
y = k * x_data + b

loss = tf.reduce_mean(tf.square(y_data - y))
optimizer = tf.train.GradientDescentOptimizer(0.2)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for step in range(400):
        sess.run(train)
        if (step % 40 == 0):
            print(step, sess.run([k, b]))
此输出为:
0[1.2522789,2.0945494]
40[5.304193,2.5357442]
80[7.116992,1.5568293]
120[8.229965,0.95582175]
160[8.913281,0.58682966]
200[9.332804,0.36028674]
240[9.590374,0.22119847]
280[9.748508,0.13580598]
320[9.845596,0.083378375]
360[9.905204,0.0511902]
非常好。然后我以这种方式更改了数据:

x_data = np.array([352.52703, 605.87817, 0.8906856, 0.4813087, 0.53391305, 0.27751151])
然后输出为
0[327576.72640.39246]
40[nan,nan]
80[nan,nan]
120[nan,nan]
160[nan,nan]
200[nan,nan]
240[南,南]
280[南,南]
320[南,南]
360[nan,nan]


任何人都可以告诉我为什么第二个输出是这样的?

只需将学习速率设置得更小

我将学习率设置为1e-5,效果很好

`

`


您将k和b初始化为0,初始梯度很大,学习率也很大,因此它与正确答案正好相反。

谢谢。你的回答是解决这个问题的一个很好的方法。你能告诉我是什么原因导致我的问题吗?有没有任何文件或教科书来解释k,b,梯度和学习率之间的关系,或者解释这些因素是如何相互作用和相互影响的other@Frank如果你对此感兴趣,你可以去Coursera参加Ang教授的机器学习,这是一个很好的起点。
(0, [16.378834, 0.032019623])
(40, [9.9999628, 0.019538468])
(80, [9.9999628, 0.019527739])
(120, [9.9999628, 0.01951701])
(160, [9.9999628, 0.019506281])
(200, [9.9999628, 0.019495552])
(240, [9.9999628, 0.019484824])
(280, [9.9999628, 0.019474095])
(320, [9.9999628, 0.019463366])
(360, [9.9999628, 0.019452637])