我正在学习通过TensorFlow训练线性回归模型。 这是一个很简单的公式:
y = W * x + b
我已经生成了示例数据:
经过模型训练后,我在Tensorboard中看到,当“ b ”完全错误时,“ W ”是正确的。因此,损失很高。
Here 是我的代码。
问题
为什么“ b ”被错误地训练?
我可以对优化器做些什么吗?
答案 0 :(得分:1)
On line 16,您要添加标准偏差为300的高斯噪声!
noise = np.random.normal(scale=n, size=(N, 1))
尝试使用:
noise = np.random.normal(size=(N, 1))
使用均值= 0和std = 1(标准高斯噪声)。
此外,在此问题中,进行20k次迭代绰绰有余。
要详细了解正在发生的事情,请查看您的情节。给定一个x
值,y
的可能值具有数千个差异单位。这意味着有很多行可以解释您的数据。因此,B可以有很多值,但是无论您选择哪一个(甚至是真正的b值),所有这些都会损失很大。
答案 1 :(得分:1)
优化工作正常,但问题出在b
参数上,该参数的估计值受noise
的初始“骰子滚动”(标准偏差为{{ 1}})比实际值N
(比b_true
小得多)