(y-y_data)**2/N 是不是损失函数的公式呀
来源:4-15 综合小练习:梯度下降解决线性回归(中)
用代码把梦想照进现实
2018-06-19
y_data = [v[1] for v in vectors] y = W * x_data + b loss = tf.reduce_mean(tf.square(y - y_data))
老师好,我数学基础不好。。请问这里为什么要构建2条线. 然后用y-y_data.
写回答
1回答
-
你要用一条线(此例子中是一条直线 y = W * x_data + b )去尽量拟合点的分布。
那你的线的 Y(每个 点的横坐标 X 对应的纵坐标) 就基本不会完全和真实的 Y 一样。
所以你要用梯度下降方法去使所有点的误差最小啊。
y_data 我的代码注释里说了是“真实的点的 y 坐标”。
而 y 是 y = W * x_data + b 这个线性公式算出来的 y(拟合的 y 坐标)。要去计算 拟合的直线的 y 和 真实的纵坐标 y_data 的误差,为了取消正负数的不良影响,用误差的平方来表示误差的量,然后把所有点的误差加起来
loss = tf.reduce_mean(tf.square(y - y_data))
然后用梯度下降的优化器来最小化我们的 loss(损失):
optimizer = tf.train.GradientDescentOptimizer(0.5) # 设置学习率为 0.5 train = optimizer.minimize(loss)
012018-06-20
相似问题