简单线性回归未能收敛于张量流

时间:2017-07-03 13:25:02

标签: python machine-learning tensorflow linear-regression gradient-descent

我是机器学习和Tensorflow的新手。目前我正在尝试按照教程的逻辑创建一个形式为y = a * x的简单线性回归模型(此处没有偏差项)。但是,由于某种原因,模型无法收敛到正确的值“a”。数据集由我在excel中创建。如下图所示:

k-means

这是我的代码,试图在我生成的这个虚拟数据集上运行tensorflow。

{{1}}

下面是ipython控制台中的打印输出,正如您在第10000次迭代后看到的那样,w的值大约是4.53而不是正确的值6。 我真的很感激,如果有人能够对这里发生的错误有所了解。我已经玩过0.01到0.0000001的不同学习率,没有一个设置能够将w收敛到6.我已经阅读了一些建议将该特征标准化为标准正态分布,我想知道这个归一化是否正常必须的?没有标准化,gradientdescent无法找到解决方案?非常感谢你!

here

1 个答案:

答案 0 :(得分:1)

这是一个塑形问题:y和标签不具有相同的形状(if(module.exports === undefined){ export deafult class/function } else { module.exports = class/function } vs [batch_size, 1])。在[batch_size]中,它会导致张量流以不同的方式解释事物,可能是通过使用某些广播...无论如何,结果是你的损失根本不是你想要的。

要纠正错误,只需替换

即可
loss = tf.reduce_mean(tf.squared_difference(y, label))

通过

y = tf.add(tf.matmul(x, w), b)

我的完整工作代码如下:

y = tf.add(tf.matmul(x, w), b)
y = tf.reshape(y, shape=[-1])