TensorFlow
模型种类为了使用机器学习来做预测,我们需要选择一个能够拟合收集到的数据的最佳模型。1.我们可以选择一个线性(直线)模型,并通过改变其陡度/梯度和位置对其进行调整,从而匹配数据点。2.我们也可以选择一个指数(曲线)模型,并通过改变其曲率(curvature)和位置对其进行调整,从而匹配同一数据点集。
成本函数为了比较哪个模型拟合得更严密,数学上我们将最佳拟合定义为一个需要被最小化的成本函数。 成本函数的一个简单样例是每个数据点所代表的实际输出与预测输出之间偏差的绝对值总和(实际结果到最佳拟合曲线的垂直投影)。用图表表示,成本函数被描述为下表中蓝色线段的长度和。
线性模型秉持简洁精神,我们将使用线性模型来对数据点进行建模。线性模型的数学表示是: y= W.x + b Where: x: house size, in sqm y: predicted house price, in $为了调整模型来更好地拟合数据点,我们可以这样做:* 调整 W 来改变线性模型的梯度* 调整 b 来改变线性模型的位置通过使用许多个 W、b 的值,最终我们可以找到一个最佳拟合线性模型,能够将成本函数降到最小。
梯度下降在当前位置以最陡的下降梯度确定方向在该方向上采取步长 X重复 & 刷新;这就是训练过程最小化成本函数是类似的,因为成本函数就像是起伏的山,我们想要找到其中的最低点,我们可以通过梯度下降类似地实现。
TensorFlow 中的线性模型TensorFlow 的2个基本组件是:占位符(Placeholder):表示执行梯度下降时将实际数据值输入到模型中的一个入口点。例如房子面积 (x) 和房价 (y_)。变量:表示我们试图寻找的能够使成本函数降到最小的「good」值的变量,例如 W 和 b。然后 TensorFlow 中的线性模型 (y = W.x + b)
TensorFlow 中的成本函数与将数据点的实际房价 (y_) 输入模型类似,我们创建一个占位符y_成本函数的最小方差就是cost
数据由于没有房价(y_) 和房子面积 (x) 的实际数据点,我们就生成它们。简单起见,我们将房价 (ys) 设置成永远是房子面积 (xs) 的 2 倍
梯度下降有了线性模型、成本函数和数据,我们就可以开始执行梯度下降从而最小化代价函数,以获得 W、b 的「good」值。0.00001 是我们每次进行训练时在最陡的梯度方向上所采取的「步」长;它也被称作学习率(learning rate)。
TensorFlow 的怪异所有变量都需要在训练开始时进行初始化,否则它们可能会带有之前执行过程中的残余值
TensorFlow 会话-1虽然 TensorFlow 是一个 Python 库,Python 是一种解释性的语言,但是默认情况下不把 TensorFlow 运算用作解释性能的原因,因此不执行上面的 init 。相反 TensorFlow 是在一个会话中进行;创建一个会话 (sess) 然后使用 sess.run() 去执行。
TensorFlow 会话-2类似地我们在一个循环中调用 withinsess.run() 来执行上面的 train_step。
TensorFlow 会话-3需要将由 x, y_ 所组成的实际数据输入再提供给输入,因为 TensorFlow 将 train_step 分解为它的从属项:
TensorFlow 会话-4从属项的底部是占位符 x,y_;而且正如我们之前提到的,tf.placeholders 是用来表示所要提供的实际数据点值房价 (y_) 和房子面积 (x) 的位置。
循环中的 print 语句将显示 TensorFlow 如何在每次迭代中学习 W 和 b 的「good」值END
我们已经以最简单的形式学习了机器学习;从一个单一特征预测结果。(为简单起见)我们选择了一个线性模型来拟合我们的数据点,定义一个成本函数来表示最佳拟合,并通过反复调整其梯度变量 W 与位置变量 b 来训练我们的模型,使成本函数降到最小。