写点什么

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 前线



2019-03-29 13:308436

评论 1 条评论

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

Redisson 分布式锁源码 07:公平锁释放

程序员小航

Java redis 源码 分布式锁 redisson

FIL矿机多少钱一台 ?FIL挖矿成本是多少?

互斥锁Mutex:鸿蒙轻内核中处理临界资源独占的“法官”

华为云开发者联盟

鸿蒙 OpenHarmony 鸿蒙轻内核 互斥锁Mutex 临界资源

Fil和BTC有什么区别?Filecoin挖矿的行情如何?

IPFS BTC fil fil币

手写链表之LinkedList源码分析

Ayue、

数据结构

小白也能看懂的Java内存模型

程序猿阿星

JMM Java内存模型 原子性 有序性 可见性;

在线base64加密解密工具

入门小站

工具

图的应用——关键路径

若尘

数据结构

pha挖矿/phala挖矿APP系统开发内容

如何看待技术采用生命周期 | 【话题讨论】

耳东@Erdong

云原生 话题讨论 7月日更

见康乘拼团软件开发|见康乘拼团系统APP开发

原来这就是Java IO啊····

华为云开发者联盟

Java 操作系统 进程 IO流 Java IO

多项目同时进行如何做好项目管理?

万事ONES

WICC 2021召开在即 清华大学教授将分享AI+网络音视频服务研究

融云 RongCloud

架构实战营模块8 课后作业

En wei

架构实战营

毕业季offer怎么拿?收下这份非典型求职面试指南

华为云开发者联盟

面试 职业规划 求职 毕业季 大学生

Vue3 + TypeScript 开发实践总结

程序员海军

typescript 大前端 Vue3 框架

【Flutter 专题】92 图解 Dart 单线程实现异步处理之 Isolate (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

与微软、IBM同台 斯图飞腾Stratifyd入选G2文本分析Grid报告

pha分币APP系统开发资料

就在今天,浪潮云说第二期来啦

云计算

腾讯一面 Java Phaser 并发编程的理解与应用

陈皮的JavaLib

Java 面试 多线程

Spring到底应该学哪些内容?

冰河

spring aop ioc 注解驱动 依赖反转

Rust从0到1-智能指针-Drop trait

rust smart pointer drop trait

深入理解搜索引擎——初识query理解

药老算法

搜索引擎 中文分词 query理解 query纠错 query分析

如何对开发团队的人员进行绩效管理?

万事ONES

研发效能 ONES 绩效管理

智汇华云|华云数据ArSDN:自主可控的SDN

华云数据

Linux之find exec

入门小站

Linux

测试开发之网络篇-常用命令

禅道项目管理

Linux 命令行

一个完整的项目管理流程包括什么?

万事ONES

项目管理 ONES

【LeetCode】主要元素Java题解

Albert

算法 LeetCode 7月日更

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