TensorFlow从0到1 | 第七篇:TensorFlow线性回归的参数溢出之坑

上一篇 6 解锁梯度下降算法 解释清楚了学习率(learning rate)。本篇基于对梯度下降算法和学习率的理解,去填下之前在线性回归中发现的一个坑。

在5 TF轻松搞定线性回归 中提到,只要把TF官方Get Started中线性回归例子中的训练数据换一下,就会出现越训练“损失”越大,直到模型参数都stackoverflow的情况。然而更换训练数据是我们学习代码的过程中再普通不过的行为,从stackoverflow.com上也能搜到很多人做了类似的尝试而遇到了这个问题。到底为什么这么经不住折腾?马上摊开看。

stackoverflow

更换训练数据如下:

  • 参数初始值a=-1,b=50;
  • 训练数据x_train = [22, 25];
  • 训练数据y_train = [18, 15]。

先亮个底:给出的训练数据只有两组但足够了,两点成一线,要拟合的直线心算下就能得出是y=-x+40,a是-1,b是40。

运行使用新数据的代码:

为了方便观察,让程序训练了10次,输出是:

参数越练损失越大的趋势果然重现了。

现在我们已经掌握了梯度下降大法,就来看看每次训练的结果到底是怎么产生的。

手工计算了两次迭代,和程序输出一致。

图中显示,训练样本(已红色标出)的值对梯度值的贡献很大,而此时沿用之前的学习率η=0.01就显得不够小了。训练样本既然不可调,那么显然只能调小学习率了。随之而来的副作用就是会导致学习缓慢,所以还得增加训练的次数。这就是之前的例子中最终调整为η=0.0028,epoch=70000的原因了。

如此看来,这的确不是TF的bug。再一次体会:训练是一门艺术

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AILearning

【Scikit-Learn 中文文档】内核岭回归 - 监督学习 - 用户指南 | ApacheCN

1.3. 内核岭回归 Kernel ridge regression (KRR) (内核岭回归)[M2012]_ 由 使用内核方法的 :ref:`ridge...

1896
来自专栏AI科技评论

开发 | CNN中的maxpool到底是什么原理?

AI科技评论按:本文整理自知乎问题“请问 CNN 中的 maxpool 到底是什么原理,为什么要取最大值,取最大值的原理是什么?谢谢。”的下Yjango和小白菜...

3537
来自专栏Petrichor的专栏

深度学习: Nonlinear (非线性)

912
来自专栏人工智能

机器学习教程:最大熵文本分类器

在本教程中,我们将讨论最大熵文本分类器,也称为MaxEnt分类器。最大熵分类器是自然语言处理,语音和信息检索问题中常用的判别分类器。使用像JAVA...

6998
来自专栏生信技能树

比较不同的对单细胞转录组数据寻找差异基因的方法

背景介绍 如果是bulk RNA-seq,那么现在最流行的就是DESeq2 和 edgeR啦,而且有很多经过了RT-qPCR 验证过的真实测序数据可以来评价不同...

46910
来自专栏GAN&CV

3D卷积简介

注:本文首发在微信公众号-极市平台。如需转载,请联系微信Extreme-Vision

1343
来自专栏社区的朋友们

[ I am Jarvis ] :聊聊 FaceID 背后的深度学习视觉算法

在苹果用 FaceID 取代 TouchID 的背后,是强大的视觉算法支持,让 iPhoneX 有能力识别各种欺骗和伪装,从而敢于将 FaceID 作为最重要的...

9152
来自专栏程序生活

交叉熵初识-cross entropy定义举例

1164
来自专栏Ldpe2G的个人博客

Mxnet 实现图片快速风格化

1093
来自专栏木子昭的博客

K近邻(knn)算法预测电影类型案例1案例2 Facebook入住地点

K近邻思想: 根据你的"邻居们"来确定你的类别 你一觉醒来,不知道自己身在何方里,你能通过计算机定位到周围5个"最近的"邻居,其中有4个身处火星,1个身处月...

2715

扫码关注云+社区