(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回答

Oscar

2018-06-19

你要用一条线(此例子中是一条直线 y = W * x_data + b )去尽量拟合点的分布。

//img.mukewang.com/szimg/5b28e1060001ddd406330548.jpg

那你的线的 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)


0
1
用代码把梦想照进现实
非常感谢!
2018-06-20
共1条回复

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程