0 序篇

2015年11月,Google正式发布了Tensorflow的白皮书并开源TensorFlow 0.1 版本。

2017年02月,Tensorflow正式发布了1.0.0版本,同时也标志着稳定版的诞生。

2019年10月,TensorFlow在经历七个多月(2019年3月1日-2019年10月1日)的 2.0 Alpha 版本的更新迭代后发布 2.0 正式版。

2.0 正式版官方介绍视频

https://v.qq.com/x/page/b3003v2g8dq.html

虽然 2.0 正式版才刚刚发布,就已经引起了学术界与科研界广泛关注与好评:

  • Google深度学习科学家以及Keras的作者表示,TensorFlow 2.0 是一个新时代的机器学习平台,这将改变了一切。
  • 深度学习研究和教育者、fast.ai创始人Jeremy Howard也称赞 2.0 版本的发布是”令人兴奋的一步,与TensorFlow一代相比是一个巨大的飞跃“。
  • 目前GitHub上排名第一的NLP机器学习课程practicalAI的作者以及苹果公司AI研究员Goku Mohandas在推特上说,他们正在从PyTorch转向TensorFlow 2.0。

为什么TensorFlow 2.0 的发布能够引发了广泛的讨论和关注?下面笔者通过对于TensorFlow“奋斗史”介绍与解读来分析TensorFlow如何成就的王霸之路。

TensorFlow的“奋斗史”包括三个章节:锋芒初露(0.1),中原逐鹿(1.0),王者归来(2.0)。

1 锋芒初露·源起

在2011年,Google Brain内部孵化出一个项目叫做DistBelief,它是为深度神经网络构建的一个机器学习系统。虽然这个著名的系统并没有开源,但是Google研究者有大量关于它设计的论文被大家所熟知,它也被广泛应用于Google内部的科研和商业产品中。这个项目最早可以追溯到2009年,由Geoffery Hinton带领的团队开发的一个实现了广义反向传播算法的框架,基于这个框架,Google内部可以快速试验新的深度学习算法并提高算法精度。比如在使用这套框架后,Google内部语音识别的错误率降低了25%。

后来,Google决定将DistBelief打造成更加稳健、快速、通用的机器学习框架,调动了相当多的工程师和科学家投入到对DistBelief的改造,这其中就包括大名鼎鼎的Jeff Dean。有了这样的豪华开发阵容,DistBelief迅速成熟蜕变,成为一个高鲁棒和工业级的机器学习框架,这就是后来于2015年11月发布的TensorFlow 0.1 版。

虽然相较于较早开源的Caffe、MXNet等优秀的机器学习框架,TensorFlow还略显年轻,但是作为Google内部的第二代机器学习框架,TensorFlow有了更加有趣的灵魂。相较于侧重于卷积的Caffe与刚从校园走出来的MXNet,TensorFlow以更加成熟完备的姿态展露锋芒。它是基于DataFlow的计算模型,算子相组合形成一个计算图,计算的过程就是数据在这个计算图的节点进行计算并流动。同时,这个计算图可以被切成不同的子图,并分配到不同的Device上,包括CPU、GPU和其他的计算设备,这样天然地对分布式友好。此外,TensorFlow从一开始就被设计成运行在多个平台上,如inference可以运行在iOS和Android设备上,训练则可以运行在不同的硬件设备上。

2016年4月14日,Google发布了分布式TensorFlow,版本号为 0.8,这是TensorFlow发布之后的比较重大的版本更新。Google的博文介绍了TensorFlow在图像分类的任务中,在100个GPUs和不到65小时的训练时间下,达到了78%的正确率。在激烈的商业竞争中,更快的训练速度是人工企业的核心竞争力。而分布式TensorFlow意味着它能够真正大规模进入到人工智能产业中,产生实质性影响。

在2016年6月,TensorFlow发布了新版本的早期版本,版本号为 0.9,增加了对iOS的支持。随着谷歌增加了TensorFlow对iOS的支持,应用程序将能够在更聪明的功能集成到它们的应用程序,最终使它们更聪明和能干。

从 0.9 版本开始,TensorFlow 支持了多平台,并且进入高速发展时期,开始不断赶超并拉开与其他深度学习框架的距离。虽只是源起,却锋芒毕露,初现王霸之气。

2 中原逐鹿·盛极

时间到了,2017年1月初,谷歌公布了 TensorFlow 1.0.0-alpha ,即 TensorFlow 1.0 的第一个“草稿”版本。2017年2月,TensorFlow在发布了1.0.0版本,也标志着稳定版的诞生。

与已有版本相比,全新的 TensorFlow 1.0 主要有以下改进:

  • 更快:TensorFlow 1.0超乎想象地快!TensorFlow 1.0 为未来更多的性能改进打下了基础,而tensorflow.org 现在可提供模型优化的提示和技巧,以达到最高速度。
  • 更灵活:TensorFlow 1.0 为 TensorFlow 引进了带有 tf.layers,tf.metrics 和 tf.losses 模块的高级别应用程序界面。TensorFlow 团队引进能够与 Keras完全兼容的新 tf.keras 模块。
  • 随时就绪:TensorFlow 1.0 可确保 Python 应用程序界面的稳定性Python能够在不打破现有代码的情况下,更容易地获取新功能。

1.0 版本不仅为 TensorFlow 机器学习函数库带来多重升级,而且为 Python 和 Java 用户使用TensorFlow 做开发降低了难度。另外,新版本的修补也得到了改善。更有意思的是,由于对TensorFlow 计算做优化的新编译器,在智能手机上运行基于 TensorFlow 的机器学习 APP 将成为可能。Tensorflow它已成为 GitHub 最受欢迎的开源项目。

下图是KDnuggets网站对2018年的机器学习框架的使用做的一个调查统计,可以看出当时TensorFlow已经遥遥领先于其他竞争(Keras 是一个上层封装,底层调用的还是 TensorFlow),奠定了其深度学习霸主的地位。

中国有句古话:盛极必衰,否极泰来,这句话对于Google的 TensorFlow 也同样适用。1.x 版本在高速发展过程中,也为自己后来发展筑起一道山,TensorFlow也产生了很多被人诟病的地方,比如API的稳定性、效率和基于静态计算图的编程上的复杂性等。同时,坚持静态图模式也培养起来了足以撼动 TensorFlow 霸主地位的框架(上述图中默默无闻的第三名,后来强势崛起的PyTorch)。

1.x 版本后期,TensorFlow发展由于自身原因(1. 为自己后来发展筑起一道山 2.坚持静态图模式)遭遇到瓶颈。PyTorch以动态图开发模式,统一化的模块命名方式,更加人性化的编程的方式(Pythonic),强势出道。这些优势无一不击中 TensorFlow 的痛点,不断追赶、威胁TensorFlow霸主地位。

下图通过搜索全世界对机器学习和人工智能类别的兴趣(Google Interest),采用过去六个月的平均兴趣分数,并将其与前六个月的平均兴趣分数进行了比较。可以看出,TensorFlow 的平均兴趣分数处于下降状态,PyTorch却呈上升趋势。

下面谷歌的图表显示了过去一年的搜索兴趣。TensorFlow为蓝色,Keras为黄色,PyTorch为红色,fastai为绿色。可以看出TensorFlow总体呈现下降趋势,而PyTorch却呈现持续增长姿态,不断缩小与TensorFlow的距离。

按这样的趋势,PyTorch在用户搜索兴趣方面追赶上TensorFlow指日可待了,TensorFlow遭遇到出生以来最大的挑战(其实TensorFlow也就才三岁多)。TensorFlow会如何应对这个挑战呢?是按部就班,在1.x版本上进行小修小补,得过且过(这个词用得有些过了,之所以会用是刚好写到这里的时候听到这首歌,同时这个词语与表达笔者对上述方法的不苟同);还是推倒重来,重新设计新版TensorFlow,涅槃重生。这个选择会关乎到以后TensorFlow数年的发展和与PyTorch竞争的成败。笔者相信,Google 并不会做选择,小孩才会做选择,大人全都要。以谷歌的巨大体量,在内部执行两个方案,最后看市场反馈推出最合适的。Google是大公司,以稳为主的策略还是很容易让人理解的。

3 王者归来·槃涅

我们都知道Google推出了后者方案,选择涅槃重生,重塑自身。那么全新的TensorFlow 2.0 究竟新在哪里呢?TensorFlow官网给出了答复:

  • Keras与TensorFlow紧密集成,默认eager execution,执行Pythonic函数。官方表示,对开发者来说,TensorFlow 2.0用起来跟Python差不多;对于研究者来说,新框架也在低级API方面进行了重点投入。
  • 为了在各种平台上运行,SavedModel文件格式进行了标准化。
  • 针对高性能训练场景,可以使用Distribution Strategy API进行分布训练,且只需进行少量代码修改就能获得出色的性能。支持Keras Model.fit、自定义训练循环、多GPU等等。
  • TensorFlow 2.0提高了在GPU上的性能表现。以ResNet-50和BERT为例,只需要几行代码,混合精度使用Volta和Turing GPU,训练表现最高可以提升3倍。
  • 新增TensorFlow Datasets,为包含大量数据类型的大型数据集提供了标准接口。
  • 虽然保留了传统的基于Session的编程模型,但官方现在建议使用eager execution进行常规的Python开发。tf.function装饰器可以把代码转换成可以远程执行、序列化、性能优化的图。在Autograph的帮助下,能把常规的Python控制流直接转成TensorFlow控制流。
  • 官方提供了TensorFlow 1.x升级2.0的迁移指南,TF2.0还有一个自动转换的脚本。
  • TensorFlow 2.0提供了易用的API,能够灵活快速的实现新想法。模型的训练和serving也已经无缝集成在基础架构中。
  • 更多关于TensorFlow 2.0的信息,可以访问官网:https://www.tensorflow.org/

几乎每一条都直击TensorFlow1.x用户的痛点,广大使用TensorFlow1.x转到PyTorch的用户表示TensorFlow 2.0 真香,纷纷倒戈。

Google深度学习科学家以及Keras的作者表示,TensorFlow 2.0 是一个新时代的机器学习平台,这将改变了一切。

深度学习研究和教育者、fast.ai创始人Jeremy Howard也称赞 2.0 版本的发布是”令人兴奋的一步,与TensorFlow一代相比是一个巨大的飞跃“。

目前GitHub上排名第一的NLP机器学习课程practicalAI的作者以及苹果公司AI研究员Goku Mohandas在推特上说,他们正在从PyTorch转向TensorFlow 2.0。

此后,PyTorch在与TensorFlow的争霸中将再难有胜算,TensorFlow 1.x 版本的失误给了PyTorch赶超的机会,PyTorch已尽力追赶了,但是还是没有实现赶超。Now,TensorFlow 2.0 已经补全缺点,同时具备比PyTorch更加完备的多平台支持、更成熟的部署方式与数量巨大的用户基数。如果PyTorch早出生一年,或者TensorFlow 2.0 晚发布一年,PyTorch还是有机会的,但是没有如果,Google依旧是最强大科技公司之一,很难反复给对手机会赶超。TensorFlow再次呈现对于其他框架压倒式优势,实现王者归来。

4 终章

TensorFlow从最开始 0.1 版本诞生时受到广泛关注,到 1.0 版本的全面爆发,再到今年 2.0 版本正式发布,它已趋于完美。TensorFlow的成长依托于Google的强大研发与号召力,但TensorFlow的成功更归功于设计的完备性、审时度势和适时革新。

经历四年时光,TensorFlow的发展与成功离不开先天的优秀天赋(Google Brain),更有赖于后天的努力拼搏(适时革新)。有天分又有努力,TensorFlow的成功理所应当。

想要体验正式版本TensorFlow 2.0 可以访问=>『TensorFlow2.0正式版教程』极简安装TF2.0正式版(CPU&GPU)教程:https://xiaosongshine.blog.csdn.net/article/details/101844926

喜欢我的文章欢迎访问

小宋是呢 CSDN=> https://xiaosongshine.blog.csdn.net/

小宋是呢 知乎=> https://www.zhihu.com/people/xiaosongshine/activities

『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史的更多相关文章

  1. 『NiFi 学习之路』把握 —— 架构及主要部件

    一.概述 通过前面几篇文章的学习,相信你对 NiFi 有了一个基础性的了解. 数据处理和分发系统 是什么概念? NiFi 系统中数据的传递方式是怎样的? NiFi 的重要 Processor 有哪些? ...

  2. 『NiFi 学习之路』入门 —— 下载、安装与简单使用

    一.概述 "光说不练假把式." 官网上的介绍多少让人迷迷糊糊的,各种高大上的词语仿佛让 NiFi 离我们越来越远. 实践是最好的老师.那就让我们试用一下 NiFi 吧! 二.安装 ...

  3. 『NiFi 学习之路』简介

    『NiFi 学习之路』简介 『NiFi 学习之路』入门 -- 下载.安装与简单使用 『NiFi 学习之路』资源 -- 资料汇总 『NiFi 学习之路』把握 -- 架构及主要组件 『NiFi 学习之路』 ...

  4. 『NiFi 学习之路』自定义 —— 组件的自定义及使用

    一.概述 许多业务仅仅使用官方提供的组件不能够满足性能上的需求,往往要通过高度可定制的组件来完成特定的业务需求. 而 NiFi 提供了自定义组件的这种方式. 二.自定义 Processor 占坑待续 ...

  5. 『NiFi 学习之路』使用 —— 主要组件的使用

    一.概述 大部分 NiFi 使用者都是通过 NiFi 的 Processor 来实现自己的业务的.因此,我也主要就 NiFi 官方提供的 Porcessor 进行介绍. 二.Processor 如果你 ...

  6. 『NiFi 学习之路』资源 —— 资料汇总

    一.概述 由于 NiFi 是一个比较新的开源项目,国内的相关资料少之又少. 加之,大家都知道,国内的那么些个教程,原创都只是停留在初级使用阶段,没有更多深入的介绍. 再者,其余的文章不是东抄抄就是西抄 ...

  7. 『go成长之路』 defer 作用、典型用法以及多个defer调用顺序,附加defer避坑点,拿来吧你

    预习内容 defer 的作用有哪些? 多个 defer 的执行顺序是怎样的? defer,return,函数返回值 三者之间的执行顺序 defer的作用 go中的defer是延迟函数,一般是用于释放资 ...

  8. 『HTML5梦幻之旅』-缤纷多姿的烟花效果

    天花无数月中开,五采祥云绕绛台.堕地忽惊星彩散,飞空旋作雨声来.怒撞玉斗翻晴雪,勇踏金轮起疾雷.更漏已深人渐散,闹竿挑得彩灯回. ——明·瞿佑·<烟火戏> 记得每年过春节的那段时间,除了欣 ...

  9. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

    作者:阿里云用户mr_wid ,z)NKt#   @I6A9do   如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV   RsfTUb)<   投票标题:  28.[阿里云 ...

随机推荐

  1. Oracle数据库中心双活之道:ASM vs VPLEX (转)

    双活方案对比:ASM vs V-PLEX 作者:王文杰 Oracle公司 Principle system analyst Oracle高级服务部 Oracle数据库中心的灾备的演变,经历了多年的演变 ...

  2. 通过代码审计找出网站中的XSS漏洞实战(三)

    一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...

  3. 【阿里云IoT+YF3300】5. Alink物模型之服务下发

    名词解释: 服务:设备的功能模型之一,设备可被外部调用的能力或方法,可设置输入参数和输出参数.相比于属性,服务可通过一条指令实现更复杂的业务逻辑,如执行某项特定的任务.    -摘自阿里云物联网产品文 ...

  4. 关于web.xml配置

    整理自网上: web应用是一种可以通过Web访问的应用程序.在J2EE领域下,web应用就是遵守基于JAVA技术的一系列标准的应用程序. 最简单的web应用什么样? 2个文件夹.1个xml文件就能成为 ...

  5. Win10安装Linux系统

    windows系统安装虚拟机,常见的是利用VMware Workstation这款软件来进行安装.在未接触Docker之前,我一直通过这款软件来进行管理的.docker是运行在linux环境下的,那怎 ...

  6. Badboy中创建Suite, test, step和Template

    参考: http://leafwf.blog.51cto.com/872759/1111744 http://www.51testing.com/html/00/130600-1367743.html ...

  7. 2019nc#7

    题号 标题 已通过代码 题解/讨论 通过率 团队的状态 A String 点击查看 进入讨论 566/3539  通过 B Irreducible Polynomial 点击查看 规律 730/229 ...

  8. jQuery - 01. jQuery特点、如何使用jQuery、jQuery入口函数、jQuery和DOM对象的区别、jQuery选择器、

    this指的是原生js的DOM对象 .css(“”):只写一个值是取值,写俩值是赋值 window.onload   ===   $(document).ready(); $(“”):获取元素   标 ...

  9. 每天学会一点点(重写equals一定要重写hashcode)

    package com.example.demo.javaError; import java.util.HashMap; /** * Created by yyy on 2019/01/24. */ ...

  10. python安装virtualenv虚拟环境步骤

    一.安装virtualenv 点击左下角最边上菜单栏输入cmd,打开命令行   2.根据版本的不同输入命令pip install virtualenv(或者pip3 install virtualen ...