欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
TensorFlow 2.0终于来了!
今天凌晨,谷歌在加州举办TensorFlow开发者峰会(TensorFlow Dev Summit),正式发布2.0版本。
这场发布会有几大亮点:
TensorFlow 2.0 Alpha版发布,用户现在可以抢先体验;
2.0版本具有简易性、更清晰、扩展性三大特征,大大简化API;
提高了TensorFlow Lite和TensorFlow.js部署模型的能力;
发布会还把TensorFlow目前的家底透露了一遍:目前TF在全球已经有超过4100万的下载次数,社区有超过1800多个贡献者。
尽管官方没有透露中国社区的情况,但是发布会现场展示一张全球地图,根据图中的用户分布情况可以推测,目前TF中国应该是仅次于美国和欧洲的第三大地区。
另外一个值得注意的变化是,从2.0开始,TensorFlow的logo也不一样,从类似积木的形状变成了两个分开的字母“T”和“F”,或许也意味着减少冗余,看上去更简洁。
简单易用可扩展,TF2.0迎来新架构
这 3 年来深度学习框架之争越来越激烈:Facebook 主推的 PyTorch 成为后起之秀,有力压 TensorFlow 之势;2016 年国内科技巨头百度发布 PaddlePaddle,2018 年底发布的 PaddlePaddle 1.0 版本标志着该框架走向成熟。
不得不说,迫于 PyTorch 的压力,TensorFlow 2.0 有了众多改变,例如 2018 年 9 月份在上海谷歌开发者大会上,机器之心了解到一个重大改变是将会把 Eager Execution 变为 TensorFlow 默认的执行模式。2019 年 1 月份,谷歌上线了 TensorFlow 2.0「开发者预览版」,让开发者们可以尝试使用。
下图展示了近几年 TensorFlow 的版本更新。但今天,TensorFlow 已经成熟为一个完全端到端的生态系统,所以今天发布的 TensorFlow 2.0 标志着一个新时代的开始
之前开发者反馈,希望TensorFlow能够简化API、减少冗余并改进文档和示例。这次2.0发布,听取了开发者的建议,因此新版本有以下三大特点:简单、强大、可拓展。
基于这三大特点,TensorFlow 2.0也有新架构,如下面的简化概念图所示:
TensorFlow 2.0 将专注于简单性和易用性,具有以下更新:
使用 Keras 和 eager execution,轻松构建模型
在任意平台上实现生产环境的稳健模型部署
为研究提供强大的实验工具
通过清理废弃的 API 和减少重复来简化 API
下面详细介绍TF2.0的新特性。
易用至上,TensorFlow 2.0 Alpha发布
这次TensorFlow的一些列更新,重点就在于:让你使用得更加简单。
TensorFlow 2.0发布以后,训练的流程将变得十分简洁:
主要流程就是:数据集成和转换→模型构建→训练→保存模型。
当然,TensorFlow也秉承着“哪儿都可以部署”的原则,使其在应用方面更加灵活和方便:
下面是TensorFlow2.0在这次更新中的几大亮点:
TensorFlow Alpha
更易用:诸如tf.keras等高级API将更易于使用;并且Eager execution将成为默认设置。例如:
>>>tf.add(2,3)
<tf.Tensor: id=2, shape=(), dtype=int32, numpy=5>
更清晰:删除了重复的功能;不同API的调用语法更加一致、直观;兼容性更加完善。
更灵活:提供完整的低级API;可在tf.raw_ops中访问内部操作;提供变量、checkpoint和层的可继承接口。
当然,TensorFlow 2.0 Alpha版本从安装上便十分的简单,仅需一句话:
pip install -U --pre tensorflow
而Eager execution 与 “@tf.function”作为核心升级重点,接下将会对其如何协同工作进行做详细介绍。
其中一个最明显的变化是,TensorFlow 是 “Eager 优先”,这意味着 op 在调用后会立即运行。在 TensorFlow 1.x 中,使用者可能会先构图,然后通过 “tf.Session.run()” 执行图的各个部分。
TensorFlow 2.0 从根本上简化了 TensorFlow 的使用 — 同样出色的 op,现在却更易理解和使用。
a = tf.constant([1, 2])
b = tf.constant([3, 4])
print(a + b)
# returns: tf.Tensor([4 6], shape=(2,), dtype=int32)
TensorFlow 2.0 使用 Keras 作为开发者的核心体验。在 2.0 中,可以如常使用 Keras,利用 Sequential API 构建模型,然后使用 “compile” 和 “fit”。tensorflow.org 中所有这些熟悉的 “tf.keras” 示例均可在 2.0 中实现 “开箱即用”。
Keras 的 “fit()” 适用于很多情况,但是,需要更高灵活性的开发者现在可以有更多选择。来看一下如下示例中以 TensorFlow 2.0 风格编写的自定义训练循环:
def train_one_step(model, optimizer, x, y): with tf.GradientTape() as tape: logits = model(x) loss = compute_loss(y, logits) grads = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(grads, model.trainable_variables)) compute_accuracy(y, logits) return lossdef train(model, optimizer): train_ds = mnist_dataset() step = 0 loss = 0.0 for x, y in train_ds: step += 1 loss = train_one_step(model, optimizer, x, y) if tf.equal(step % 10, 0): tf.print('Step', step, ': loss', loss, '; accuracy', compute_accuracy.result())return step, loss, accuracy
此示例采用 Autograd 风格的 GradientTape,并通过优化器手动应用你的梯度。在编写具有复杂内部运作的自定义训练循环(譬如在强化学习中)或进行研究(轻松帮您落实提高优化器效率的新想法)时,这特别有帮助。
“Eager execution” 还有助于调试和监控运行中的代码,可以使用 Python 调试程序检查变量、层及梯度等对象。在训练循环中,使用 “if”、“for” 和 “print()” 等 Python 语句。
一旦代码运行正常,便会想要获得图表优化和效率。为此,可以利用装饰器 “@tf.function” 封装 “train”。“tf.function” 中内置 Autograph,因此无需任何特殊操作便可获取以用图表效率运行的 “if” 或 “for” 子句。
@tf.function
def train(model, optimizer):
train_ds = mnist_dataset()
step = 0
loss = 0
accuracy = 0
for x, y in train_ds:
# 如上所述,包括“if”和“print()”
return step
这段代码并不会受注释影响,但会将其编译到可在 GPU、TPU 上轻松运行的图表中,或将其保存至 “SavedModel” 留待后用。
针对这对代码,尤为有趣之处在于,通过在 “@tf.function” 中封装 “train()”,“train_one_step()”、“compute_loss()” 和 “compute_accuracy()” 也会自动进行转换。也可选择在 “@tf.function” 中仅封装部分运算,从而获得所需行为。
此外,TensorFlow 2.0 完全支持 Estimator。
tensorflow.org/alpha 链接
https://www.tensorflow.org/alpha
高级API变化
TensorFlow 2.0 在API上可谓是下足了功夫,在这个版本中,高级API将十分“易于扩展”且“扩展地很容易”:
例如,对tf.keras.optimizer tf.keras.layers tf.keras.loss等一些列高级API都做了“易用性”的优化。例如:
值得注意的是,尤其是对诸如RNN layers等神经网络的高级API做了优化,用户还可以对其自定义。
可谓是开发者福音。
升级
TensorFlow 2.0 将包含许多 API 变更,例如,对参数进行重新排序、重新命名符号和更改参数的默认值。手动执行所有这些变更不仅枯燥乏味,而且容易出错。
为简化变更过程并让开发者尽可能顺畅地过渡到 TensorFlow 2.0,TensorFlow 工程团队创建了实用程序 tf_upgrade_v2,可将旧代码转换至新 API。
tf_upgrade_v2 链接
https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/upgrade.md
TensorFlow.js v1.0
TensorFlow for Javascript已经有300,000次下载和100个贡献者。 今天TensorFlow.js的1.0版本包括性能改进。
例如浏览器中MobileNet v1推理的9倍提升。 还有针对Web开发人员的新现成模型和更广泛的平台支持。
TensorFlow.js 1.0 版本项目地址:https://github.com/tensorflow/tfjs/releases
从研究到产品、从服务器端到移动端,TensorFlow 已经成熟为了一个全面的生态系统。
在 TF 2.0 和 TF.js 之外,现场还介绍了 TensorFlow 新网站,从网页中我们也可以看到谷歌将 TensorFlow 定位为端到端的开源机器学习平台,它添加了更多文档、示例和工具。
TensorFlow Lite:超20亿移动设备部署使用
TensorFlow Lite 是一个为移动和嵌入式设备打造的轻量级、跨平台解决方案。
这样一个轻量级的解决方案很有必要,因为机器学习越来越多地转移到终端设备,如手机、汽车、可穿戴设备等。在这样的设备上使用 ML 有很多限制,如有限的计算能力、有限的内存、电池限制等,TensorFlow Lite 可以很大程度上解决这些限制。
TensorFlow Lite 的用例
一个惊人的事实:已经有 20 亿移动设备部署使用了 TensorFlow Lite。
说明,TensorFlow Lite 有很多国内外客户……
网易有道技术总监林会杰作为 “为什么选择 TensorFlow Lite” 的代表,受邀上台介绍了有道翻译应用 TensorFlow Lite 取得的成果。
TensorFlow Lite 四大主题:
可用性 (Usability):拿来即用
性能 (Performance):模型执行速度更快
优化 (Optimization):让你的模型更小、更快
文档 (Documentation):有很多资源
可用性:部署简单,拿来即用
保存模型,转换到TF Lite,就是这么简单。
新的 TensorFlow Select 功能让模型转换到 TensorFlow Lite 更简单。
性能:在可用的硬件条件下,让模型执行尽可能快
有多快呢?训练 MobileNet v1,CPU、GPU 和 Edge TPU 下推理速度分别提升了 1.9倍、7.7 倍和 62 倍!
优化:让模型更小、更快
优化表现:
文档:
One More Thing:
TensorFlow Lite 工程师 Pete Warden 上台介绍了一个非常酷的 “小玩意”:
是一个名为珊瑚 (Coral) 的小型开发板,一款可以构建和试验 AI 设备的硬件。
它的原理类似树莓派,但使用了定制的 Google 处理器,专为 AI 设计。没错,在这个小小的板上,你可以运行 TensorFlow。
Warden 展示了一个小 demo:
说一个特定的单词,Coral 板上黄色的小灯会应声亮起来。
模型只有 20KB 大小,运行使用不到 100KB 的 RAM 和 80KB Flash。
谷歌表示:“Coral 提供了一个完整的本地 AI 工具包,可以轻松地将你的想法从原型变成到产品。”
像树莓派一样,可以期待更多使用 Coral 开发的有趣的事情。
售价 149.99 美元,传送门:
https://coral.withgoogle.com/products/
文章来源
新智元:
TensorFlow 2.0 新鲜出炉!新版本,新架构,新特性
机器之心:
重磅发布2.0 Alpha版,TensorFlow新定位:端到端开源机器学习平台
往期精选
每日一道LeetCode,滴水穿石,一天一个新收获,剑指offer!
自动驾驶的前世今生,能否直破未来潮流
K近邻算法(KNN)原理小结
公众号后台回复关键词学习
回复 免费 获取免费课程
回复 直播 获取系列直播课
回复 Python 1小时破冰入门Python
回复 人工智能 从零入门人工智能
回复 深度学习 手把手教你用Python深度学习
回复 机器学习 小白学数据挖掘与机器学习
回复 贝叶斯算法 贝叶斯与新闻分类实战
回复 数据分析师 数据分析师八大能力培养
回复 自然语言处理 自然语言处理之AI深度学习
网友评论