我是机器学习和Tensorflow的新手。目前我正在尝试按照教程的逻辑创建一个形式为y = a * x的简单线性回归模型(此处没有偏差项)。但是,由于某种原因,模型无法收敛到正确的值“a”。数据集由我在excel中创建。如下图所示:
这是我的代码,试图在我生成的这个虚拟数据集上运行tensorflow。
{{1}}
下面是ipython控制台中的打印输出,正如您在第10000次迭代后看到的那样,w的值大约是4.53而不是正确的值6。 我真的很感激,如果有人能够对这里发生的错误有所了解。我已经玩过0.01到0.0000001的不同学习率,没有一个设置能够将w收敛到6.我已经阅读了一些建议将该特征标准化为标准正态分布,我想知道这个归一化是否正常必须的?没有标准化,gradientdescent无法找到解决方案?非常感谢你!
答案 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])