发新帖

【转载】小白都能懂的Tensorflow入门

[复制链接]
1358 5

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
本帖最后由 王奇文 于 2018-4-15 22:26 编辑

小白都能懂的Tensorflow入门,无法翻墙的同学请参考我的有道云笔记。注:以下只是第一部分(文字),粘贴时图片没了,建议点链接看原文。
Gentlest Introduction to Tensorflow
原文地址:https://medium.com/all-of-us-are-belong-to-machines/the-gentlest-introduction-to-tensorflow-248dc871a224


作者:Soon Hin Khor,日本人
http://www.tuicool.com/articles/YBFvMvE
本文是日本东京 TensorFlow 聚会联合组织者 Hin Khor 所写的 TensorFlow 系列介绍文章,自称给出了关于 TensorFlow 的 gentlest 的介绍。
Tensorflow简介--01
介绍
我们将会用一个非常简单实际的问题来帮助理解机器学习和tensorflow(TF)。我们使用一个feature(变量)房屋面积来预测房屋价格。这样将避免讨论高维数据,让我们可以集中理解TF中定义模型,应用模型和训练模型。
(原文中都写的是machine learning,机器学习。尽管现在大家都管TF为深度学习框架,我仍然翻译成机器学习。)
机器学习简介
我们从下面收集的一组数据开始。下图每一个点表示两个值--一个outcome(房屋价格)和一个影响feature(房屋面积)。

然而,我们不知道那些不在图上的features点对应的价格。

我们可以使用机器学习来发现两个之间的关系,这样的话给定一个feature点,我们可以精确的预测出结果。

第一步,选择模型
模型类型
要进行预测,我们需要选择一个模拟可以最好的拟合我们上面收集的数据。
我们可以选择一个线性模型,然后通过调整斜率和截距来拟合那些点。

我们也可以选择一个指数模型,然后通过调整曲率和位置来拟合那些点。

损失函数
要比较哪个模型拟合更好,我们定义最佳拟合为损失函数,我们要最小化这个损失函数。一个损失函数的例子是真实值和预测值的差的绝对值的和(数学上也叫L1)。也就是下图中那些蓝色线的和就是。

注意:更通常的损失函数是距离的平方和,也就是最小二乘。
线性模型简介
为了简单化问题,我们用线性模型来拟合数据。一个线性模型何以数学的表达为
y = W.x + bWhere:x: house size, in sqmy: predicted house price, in $
要调整参数来拟合数据,我们可以
  • 调整W来改变线性模型的梯度

  • 调整b来改变位置

通过选择不同的Wb,我们可以最终选者一个最合适的模型来最小化损失函数。除了随机的选择Wb,我们有没有更好的办法来尝试Wb
梯度下降
如果你在山上的一个平台上,当你想下降到最低点的时候,你的视野是这样的

下降的方向是不明了的!这样最好的办法就是梯度下降(gradient descent):
  • 在当前位置找到最陡峭的方向最为梯度方向
  • 沿着选择的方向走一步,步长为X
  • 重复上面的办法,这就是training
最小化损失函数也相似。下图中,损失函数就像那个山一样起伏,我们的目的是找到最低点。通过梯度下降,我们可以做到这一点。

有了线性模型,损失函数,和梯度下降这些概念,我们可以进一步学习TF了。
第二步:TF中建模
TF中线性模型
TF的两个基本概念是:
1. placeholder: 表示进行梯度下降算法的时候,输入模型中的实际值。在上面的例子中,也就是房屋面积(x)和房屋价格(y_)。

2. variable:表示损失函数中我们要寻找最佳值的那些变量,也就是上例中的Wb

在TF中线性模型y = W.x + b表示为

TF中的损失函数
类似于把真实房屋价格输入到模型中,我们建立一个placeholder:

我们的最小二乘损失函数可以表示为

数据
因为我们没有实际的房屋价格(y_)和房屋面积(x),我们模拟出它们的值

模拟的时候,我们假设房屋价格是房屋面积的2倍。
梯度下降
有了线性模型损失函数数据,我们就可以用梯度下降来最小化损失函数,寻找到最优的W和b。

0.00001就是梯度下降中的沿着最陡峭方向的步长,也叫learning rate
第三步:训练模型
训练模型包括按照预先设置的迭代次数进行梯度下降,或者直到损失函数小于一个预先给定的值。
TF Quirks
所有的variable都要给定初始值,否则的话他们可能保持上次迭代的值

TF Session
尽管TF是一个python库,python是一个解释型的语言,但是因为性能原因,TF默认不能执行解释运算。所以上面的init并没有执行。TF在session里面执行,建立一个session(sess)然后执行的话使用sess.run()

类似的,我们通过调用sess.run()里的循环来执行train_step.

你需要把实际值输入到x,y_组成的feed里面去,这是因为TF把解出来的train_step放入他的dependencies里:

dependencies的底部就是x, y_的placeholders.我们已经知道,tf.placeholders是用来输入实际的房屋价格(y_)和房屋面积(x)的。
结果
我们打印出循环里的值来显示TF怎么找到最佳的Wb的。

总结
我们学习了机器学习的最简单的模型,用一个feature来预测结果。为了简化问题,我们使用了线性模型来拟合数据。然后定义一个损失函数来找到最佳拟合。最后通过梯度下降来找到variableWb的最佳估计。
下一步
在下一篇文章,我们将会
  • 设置Tensor Board来可视化TF的执行,这样可以检测到我们模型,损失函数和梯度下降的问题
  • 分批(batches)输入数据来训练模型(而不是每次输入一个数据点),并且展示这样会怎么影响结果
======


完整中文版参考我的有道云笔记
英文版参考Medium:Gentlest Introduction to Tensorflow
原文地址:https://medium.com/all-of-us-are-belong-to-machines/the-gentlest-introduction-to-tensorflow-248dc871a224
本楼点评(0) 收起

精彩评论5

admin  管理员  发表于 2018-4-13 21:22:08 | 显示全部楼层
可以把笔记作为附件上传 docx 跟更多人分享  ;-P
本楼点评(0) 收起
王奇文  TF荚荚  发表于 2018-4-13 22:34:27 来自手机  | 显示全部楼层
好的
本楼点评(0) 收起
XY1988  TF荚荚  发表于 2018-4-13 23:00:49 来自手机  | 显示全部楼层
界面还是有点奇怪
本楼点评(2) 收起
大葱拌豆腐  TF荚荚  发表于 2018-4-13 23:46:05 | 显示全部楼层
图片什么显示不出来,希望能更新补上
本楼点评(2) 收起
ves  TF荚荚  发表于 2018-7-4 19:39:00 | 显示全部楼层
插图还是有问题
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表