NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

TensorFlow 1.0 已死,TensorFlow 2.0 万岁

  • 2019-03-29
  • 本文字数:3910 字

    阅读完需:约 13 分钟

TensorFlow 1.0已死,TensorFlow 2.0万岁

作为 AI 关注者,如果本月你没有及时跟进重大新闻,那么很可能会错过一个重磅消息,那就是 TensorFlow 2.0 的推出。谷歌首席决策情报工程师 Cassie Kozyrkov 认为整个 AI 行业的格局都将因此发生改变。


去年,我曾经在文章中讨论过关于 TensorFlow 大家必须了解的九件事,现在,又有了新的、必须得知晓的新事件——TensorFlow 2.0 出来了!


革命就在这里!掌声送给 TensorFlow 2.0。


这是一番彻底的改造,而刚刚发生的这一切必将给各个行业产生深远的影响。好在变革才刚刚起步,因此如果大家身为 2019 年才刚刚接触 TensorFlow 的新手,那么恭喜你,这可能算是迈入 AI 领域的最佳时机了。


简而言之:TensorFlow 真正让 Keras 完整了起来。相信能理解这句话的朋友们一定会为此振奋不已。

糟糕的过往体验

我听不少人说 TensorFlow 1.x 很讨人喜欢,反正我是压根理解不了这种观点。TensorFlow 1.x 可以算是行业领域中的车床……重要,但完全谈不到用户友好这一层。充其量,它也就是能够帮助用户完成以往根本无法想象的大规模 AI 任务,不过真的、真的没有好用可言。



首先,我认为任何宣称 TensorFlow 1.x 易于掌握的言论都值得批判一番。学习过的朋友们一定还记得,其陡峭的学习曲线使得普通爱好者几乎不可能掌握;但在学会之后,伤痕累累的我们又开始大肆炫耀——如同向他人炫耀自己攀登珠峰时冻掉了脚趾一样。这有意思吗?抛开那一点点本无必要的虚荣心,这样高的门槛真的有意思吗?



相信我,你不是唯一有此感觉的用户——TensorFlow 1.x 教程带给每个人的,几乎都是这样的体验。 TensorFlow 的核心优势在于性能,其设计目标是为了能够将模型由研究环境转移至生产环境并实现大规模交付。然而,TensorFlow 1.x 却几乎断送了这些承诺。只有坚持不懈并攻克这道难关,我们才有可能加入 ML 从业者队伍,并进一步探索其它令人向往的事物——例如寻找新的行星或者开拓医学疆土。


遗憾的是,如此强大的工具却被掌握在极少数人手中……直到现在。



不用操心张量是个什么东西。在我学习那会,大家都把它们叫作矩阵(广义)。TensorFlow 这个名称,实际上是在强调其非常擅长执行涉及多维数组(呃,矩阵)的分布式计算这一基本事实,而这一切都能够在大规模 AI 应用当中发挥重要作用。

可爱又喜人的 Keras

现在,我们说完了其中最困难的部分。接下来,该聊聊大家真正希望接受的解决方案了。有一回我在上班时,无意中听到有人说“我觉得我真的很喜欢 Keras。”


没错,Keras 是一种逐层构建模型的规范,适用于多种机器学习框架(因此不限于 TensorFlow)。但大家对它的接触,一般源自 TensorFlow 当中用于实现高级 API 访问的 tf.keras。



顺带一提,撰写本文时恰逢 Keras 项目的四岁生日(2019 年 3 月 27 日)。生日快乐,小家伙!


Keras 在设计之初就秉持着与 Python 类似的观念,即以人为本——它非常灵活、敏捷且简单易学。

我们为什么不能双管齐下?

我们为什么非得从 Keras 的亲民与 TensorFlow 的强大之间做出选择?为什么不能二者兼有?



好主意!现在我们都有了!简而言之,答案就是 TensorFlow 2.0。



这就是 TensorFlow 2.0。大家可以亲自点点那些橙色的按钮。


“我们认为,用户没有必要在简单的 API 与可扩展的 API 之间做出先找。我们希望推出一种更高级的 API,能够将你从 MNIST 数据集一路引领至宇宙深空。” 

— Karmel Allison,谷歌公司 TensorFlow 工程负责人

可用性的革命

展望未来,Keras 将成为 TensorFlow 的高级 API;而凭借着自身扩展,用户现在可以直接通过 tf.keras 使用 TensorFlow 的全部高级功能。


换言之,所有的 TensorFlow 都将具有 Keras 的简单性,而 Keras 将在任何规模与一切硬件之上带来 TensorFlow 的强大性。



在新版本中,我们最讨厌的 TensorFlow 1.x 原罪都将得到救赎。为了把两个数字加起来,就非得搞一些黑魔法似的神秘操作?当然不用。TensorFlow 会话?不要。用一百万种方法实现同一种效果?没门。切换硬件或者变更规模就得重写代码?开什么玩笑。大量样板文件?没必要。根本没有任何引导性可言的错误信息?滚蛋。陡峭的学习曲线?解决。


TensorFlow 已死,TensorFlow 2.0 万岁!


作为经年累月的受虐对象,大家肯定想着,来吧,那个永远存在的“但是”在哪呢?性能肯定得受点影响吧?错!我们绝对不会在性能上做出妥协。


TensorFlow 现在真正可爱起来了,并成为游戏规则的改变者,这意味着我们这个时代下最强大的工具之一终于摆脱了大部分入门障碍。来自各行各业的技术爱好者终于有能力加入其中。是的,研究人员与热情的学习者在新版本中将得到更友好,或者说应有的待遇。


我们这个时代下最强大的工具之一终于摆脱了大部分入门障碍!


我们敞开大门欢迎每一位朋友?想要试?那就试试!

体验提升

在 TensorFlow 2.0 当中,急切执行现在成为默认设置。你甚至可以在急切上下文中使用图形,从而显著简化调试与原型设计工作,而 TensorFlow 运行时则负责解决性能与扩展方面的问题。


TensorFlow 1.x(声明性编程)中的纠缠图对很多人而言都是噩梦般的存在,但现在急切执行(命令式编程)最多只能算是正常梦境中的一点小惊吓。如果之前大家因为难度关系而跳过了声明编程,那要向你说一声恭喜——TensorFlow 2.0 为每个人提供相同的全新开端。

简洁如一

在 Keras 的引导之下,大量 API 在 TensorFlow 当中得到了整合,因此用户现在能够更清晰地理解何时需要加以使用。举例来说,现在我们只需要一组优化器与一组指标。那么层集又有多少?没错,一个。这就是 Keras 的风格,简洁如一。


事实上,整个工具生态系统就像进行了一次开学大扫除,从数据处理流水线到简单模型输出,再到 TensorBoard 与 Keras 的整合,所有的一切都被纳入一条单线。



新版本还提供其它一些出色的工具,能够帮助用户切换及优化分发策略,从而在实现惊人扩展效率的同时又不失去 Keras 带来的任何便利性优势。



这些分发策略非常酷炫,对吧?

还有什么问题?

如果性能没有受到影响,那么权衡之后的短板在哪?总会有问题的,对吧?


实际上,问题就是让大家等了这么长时间。TensorFlow 一直感激用户们的耐心,用以酝酿这套真正友好的版本。我们并不是故意把好东西藏了起来。为深度学习模型制作工具是个全新领域,我们也一直在探索甚至是摸索。在过程当中,我们不可避免地犯了很多错误,但也因此学习到了大量宝贵的经验。


TensorFlow 社区投入了大量精力完成从 0 到 1 的质变,然后再对这颗珍贵的原石进行切割与抛光,打掉一切糟糕的元素。我们从来没想过先拿个半成品出来,但这个过程客观存在,而且也确实给大家带来了很多不便。总之,一切都过去了,经历了暂时的痛苦,我们再次感谢你的耐心等待。


我们不会牺牲性能!


要说这段经历的好处,就是在体会过 TensorFlow 1.x 的一切之后,你更能够欣赏新版本的 API 友好设计;大量重复功能被清除之后,新版本的使用方式也更加清晰。另外,错误信息也经过了整理,现在更简洁易懂、可操作性暴增。最后,强大的性能也依然存在。

有什么大不了的?

有些朋友可能对此不屑一顾:只要多拿点时间进行完善,1.x 版本中的大部分功能都已经是现成的,只要整合到 2.0 中就可以了,这有什么大不了的?好吧,但并不是所有人都像我们一样愿意挖掘这些排布杂乱的定期。改造与清理工作同样值得认同与尊重,对不对?当然,这还不是新版本最大的意义。


2.0 版本最大的意义在于:TensorFlow 正式宣布将对可用性投入绝不妥协的永久关注。


AI 技术允许用户自动执行那些无法提供明确表述的任务,能够帮助我们自动实现某些原本无法操作的工作。而民主化进程,则代表着大规模 AI 这一有力武器不再被掌握在少数精英集团手中。


现在,任何人都可以参与进来,亲身体验一番。


想象一下,未来“我知道如何使用 Python 编写程序”将和“我知道如何用 AI 技术解决任务”将变成同样常见的两种陈述……没错!这,不就是新闻头条里常说的“颠覆”么?

艰苦的迁移之路

相信大家都了解,新版本的升级是一项艰苦的工作,特别是考虑到 2.0 版本中引入了数量众多的变化。如果你打算将原有代码库迁移至 2.0 版本,并发现过程中充满挑战,请别灰心——我们在谷歌也与你面对着同样的问题。我们拥有世界上规模最大的代码库之一,而随着后续推进,我们也将与大家分享详尽的迁移细节与指导意见。


另外,我们也为大家准备了良好的工具,用于简化整个迁移过程。


如果你依赖于特定功能,不用担心——除了 contrib 之外,TensorFlow 1.x 中的所有功能都将被存放在 compat.v1 兼容性模块当中。我们还为大家准备了一份自动代码更新脚本,其能够在 TensorFlow 2.0 上运行。请参阅以下视频了解更多细节信息。

开启新征程

TensorFlow 2.0 对于新手非常友好;换言之,那些曾经饱受折磨,并打算看新手笑话的老鸟们这下要失望了。


如果你身为 TensorFlow 初学者,虽然现在才投身 AI 似乎有点晚,但一切都还来得及。或者说,现在正是开启学习之路的最佳时机。


截至 2019 年 3 月,TensorFlow 2.0 仍然以 alpha 测试版的形式交付(这将是一套预览版本),因此现在学习将能够帮助大家做好准备,并更好地迎接社区计划在下个季度全面发布的完整版本。


经过此番天翻地覆的调整,初学之路已经变得平坦了许多。场地更平整,比赛更轻松,而且始终为你留有席位。欢迎加入!我们期待着有更多新生力量加入进来,也希望大家能够与我们一样对这个新的、充满可能性的世界感到兴奋。

干一番事业吧,同志们!

要获取教程、示例、文档与工具等入门资料,请访问经过重新设计的 tensorflow.org 网站……如果打算直接上手,请使用以下命令:


pip install tensorflow==2.0.0-alpha0
复制代码


你也可以点击此处参阅详细说明。


原文链接:


https://hackernoon.com/tensorflow-is-dead-long-live-tensorflow-49d3e975cf04


更多内容,请关注 AI 前线



公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-03-29 13:308240

评论 1 条评论

发布
用户头像
TensorFlow 1.0 已死,TensorFlow 2.0 万岁
2019-06-17 10:48
回复
没有更多了
发现更多内容

字节内部进阶用的Java中高级岗技术图谱到底泄露了,和开源没区别

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

和腾讯大牛的技术面谈,分布式系统中ACID和CAP有什么区别

Java 程序员 后端

中国移动5G消息开发者社区第三期直播课堂圆满结束,直播回放已上线社区!

5G消息

译介:《组装一台电脑9:精简》

姬翔

9月日更

吊打面试官必备-阿里内部性能优化实战手册

Java架构师迁哥

智慧物流可视化,能否解决购物节后的爆仓危机?

ThingJS数字孪生引擎

大前端 物联网 可视化 智慧物流 数字孪生

突击 22 天面进腾讯,给到 32K*14 薪!全靠这份阿里面试参考指南了

Java 程序员 架构 面试 计算机

分布式事务内存数据库--MemDB

hanaper

什么?分布式事务现在不是都在用么?你还不会?

Java 架构 分布式 后端 计算机

要不要换种方式开发软件?

鲸品堂

软件开发

NoSQL数据库——Cassandra

hanaper

TDSQL数据同步和备份

腾讯云数据库

数据库 tdsql

马某兵VIP资料惨遭泄露,Java大厂面试手册,21年高频题版

Java架构师迁哥

IT大厂八股文更新上线的操作系统,刚上线点击量破百万!赶紧收藏

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

为抢人才,字节架构师竟将42W字「2021大厂真题集」,上传GitHub

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

张宏江出席HICOOL 2021全球创业者峰会,阐述AI研究与创业新机遇

硬科技星球

人工智能 大模型时代 悟道2.0

史诗级放水…字节3-2大牛分享350道Java岗真题,刷完获阿里offer

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

非科班杀进字节跳动,全靠GitHub公认最强的数据结构与算法笔记

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

一年数十万次实验背后的架构与数据科学

百度开发者中心

人工智能 架构 最佳实践 方法论 数据科学

代理服务器转发消息时的相关头部(qbit)

qbit

正向代理与反向代理 Proxy

Alibaba内部713页Java程序性能优化实战手册首次开放!大受好评

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

如何让项目准时上线 - 续篇

石云升

项目管理 管理 引航计划 内容合集 9月日更

和腾讯大佬的技术面谈,BTAJ面试有关散列(哈希)表的面试题详解

Java 程序员 后端

SpringBoot 如何进行对象复制,老鸟们都这么玩的

Java 架构 后端 计算机 框架

自定义View笔记

Changing Lin

9月日更

Alibaba最新发布:2021最符合Java程序员的“学习路线”

Java架构师迁哥

MDEX市值机器人系统开发功能介绍

量化系统19942438797

交易所 市值机器人 MDEX

淘宝网 Java 千亿级并发系统架构设计笔记(全彩版小册开源)

Java 架构 面试 后端 高并发

爬虫初探: 一次爬虫的编写尝试

程序员架构进阶

实战问题 个人思考 9月日更 spider 搜索结果

阿里IM技术分享(三):闲鱼亿级IM消息系统的架构演进之路

JackJiang

架构 即时通讯 IM

上云迁移之路,如何选择适合方式?

浪潮云

云计算

TensorFlow 1.0已死,TensorFlow 2.0万岁_AI&大模型_Cassie Kozyrkov_InfoQ精选文章