TensorFlow2.0终于问世,Alpha版可以抢先体验

tensorflow2.0终于问世,alpha版可以抢先体验。新版本主打简单易用可扩展,大大简化api,最后,连logo也改了。
tensorflow 2.0终于来了!
今天凌晨,谷歌在加州举办tensorflow开发者峰会(tensorflow dev summit),正式发布2.0版本。
这场发布会有几大亮点:
tensorflow 2.0alpha版发布,用户现在可以抢先体验;
2.0版本具有简易性、更清晰、扩展性三大特征,大大简化api;
提高了tensorflow lite和tensorflow.js部署模型的能力;
发布会还把tensorflow目前的家底透露了一遍:目前tf在全球已经有超过4100万的下载次数,社区有超过1800多个贡献者。
尽管官方没有透露中国社区的情况,但是发布会现场展示一张全球地图,根据图中的用户分布情况可以推测,目前tf中国应该是仅次于美国和欧洲的第三大地区。
另外一个值得注意的变化是,从2.0开始,tensorflow的logo也不一样,从类似积木的形状变成了两个分开的字母“t”和“f”,或许也意味着减少冗余,看上去更简洁。
简单易用可扩展,tf2.0迎来新架构
tensorflow 已经发展为世界上最受欢迎和被广泛采用的机器学习平台之一,自2015年问世,并在去年11月迎来三周岁生日。
之前开发者反馈,希望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)
更清晰:删除了重复的功能;不同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 风格编写的自定义训练循环:
deftrain_one_step(model,optimizer,x,y):withtf.gradienttape()astape: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)returnlossdeftrain(model,optimizer):train_ds=mnist_dataset()step=0loss=0.0forx,yintrain_ds:step+=1loss=train_one_step(model,optimizer,x,y)iftf.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.functiondeftrain(model,optimizer):train_ds=mnist_dataset()step=0loss=0accuracy=0forx,yintrain_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 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/

全球半导体先进制程之战打响,未来半导体行业的创新之路在何方
医疗废物在线管理解决传统医废收集哪些问题?
厂家直销LED定时芯片 8脚触发定时IC芯片低功能体积小重量轻
pscad软件介绍
TRUMPF在短波红外VCSEL助力OLED屏下传感和激光雷达
TensorFlow2.0终于问世,Alpha版可以抢先体验
牛津纳米孔公司推出了可供购买的Flongle基本工具包
PCB板布局简单规则
[图文]调频发射芯片max2606
雷军为新机预热:小米11将带来高端影像新突破
你知道怎样选择云吗
汽车动力电池怎样才能满足新能源标准
SiC MOSFET驱动电压的分析及探讨
CDMA与TDMA、FDMA的比较与选择指南
Magic Leap CEO:我们未来将创造一个共享现实的Magicverse平台
PID算法与PID三个调节分量的优缺点概述
超声波电机在实现摄像头模组光学变焦或自动对焦的优势
黑莓,诺基亚中国市场碰头,无奈对手是诺基亚,黑莓惨淡收场
JEDEC的DDR4技术标准的公布
SpaceX第19次空间站补给成功执行,创造新回收纪录