“码上作答” 专栏
为了更好地帮助开发者解决应用 TensorFlow 时遇到的问题,提供更丰富的技术指引、应用灵感,我们上线了 “码上作答” 专栏,每个月针对开发者集中关心的问题,邀请各行各业、具有丰富 TensorFlow 经验的资深专家分享经验和心得,同时接受大家的提问,为各位开发者答疑解惑。
接下来有请 “码上作答” 第一期嘉宾
彭靖田
大家好,作为一路陪伴和见证 TensorFlow 从 v0.7 到现在的开发者和老用户,很开心有机会能够作为第一期嘉宾参与 TensorFlow “码上作答” 栏目,与各位分享我对 AI / TensorFlow 2.2 的学习经验和心得体会。
这一期,我想尽可能系统化的谈谈对最新版本 TensorFlow 2.2 的看法。希望通过我整理总结的 10 个学好 TensorFlow 2.2 的理由,AI 新玩家们可以快速入门,TensorFlow 老师傅们能够获得一个更加全面的视角来认知 TensorFlow 及其生态。
欢迎大家在阅读后向我提问,我将在 “码上作答” 第一期的下篇为大家解答,记得持续关注!(提问方式请见文末)
理由1:快速上手只需十分钟
TensorFlow 2.2 在易用性和简化 API 方面做了大量优化。对于新手,可以使用高层封装的 API 实现面向模型编程 (Model Oriented Programming, MOP)。我们以一个典型的 MNIST CNN 模型为例,展示 TensorFlow 2.2 的实现:
实例化一个 CNN 模型
统计模型基础信息
一行代码训练模型
通过这个简单示例,我们得以管中窥豹。tf.keras 提供了一套面向模型的编程方法:实例化 (Sequential 和 Functional API) 、统计 (Summary)、定义优化器和损失函数 (Compile)、模型训练 (Fit)、评估 (Evaluate)、预测 (Predict)、保存 (Save) 和加载 (Load) 等。这使得 TensorFlow 用户可以更加专注于模型开发和测试。
请参考
https://github.com/DjangoPeng/tensorflow-101/blob/master/experts/code_sample/chapter-2/tf_keras.ipynb
理由2:快速迁移现成 Keras 项目
TensorFlow 2.2 实现了 Keras 所有接口的完全兼容,并且解决了原生 Keras 不支持分布式训练的问题。
因此,如果你已经在使用 Keras 实现的模型,可以尝试使用import tensorflow.keras as keras
来进行快速迁移。如果你想要尝试扩展 Keras 分布式训练,也可以使用 tf.distribute 模块赋能你之前的训练代码。
参考
https://tensorflow.google.cn/beta/tutorials/keras
理由3:快速部署生产环境
参考
https://tensorflow.google.cn/tutorials/keras/save_and_load
理由4:快速实现模型分布式训练
TensorFlow 早在 v0.8 就已实现基于 PS-Worker 的分布式模型训练。
经过3年多的迭代和更新,TensorFlow 2.2 不仅提升了分布式训练的性能,而且通过内置的6种分布式训练策略,帮助不熟悉分布式计算的新同学用一行代码实现分布式训练,效率提升十分明显。
部分内置的分布式训练策略
参考
https://tensorflow.google.cn/guide/distributed_training
理由5:原生支持多元化的数据处理
tf.data 是 TensorFlow 2.2 推荐使用的数据处理 API ,其强大的功能体现在对于多种数据来源、数据格式和数据处理方法的支持。对于个人开发者和小团队,可以使用本地文件和对象存储系统作为数据来源,对于拥有海量数据的大厂,则可以从分布式文件系统中分批次读取数据或搭建数据处理流水线。
从数据格式和内置数据处理方法的丰富度上,我们可以洞察到 TensorFlow 2.2 已不仅是一个处理计算机视觉或深度学习的框架,而是能够实现 NLP 和 GAN 等多种细分 AI 领域的通用 AI 框架。
tf.data 模块介绍
参考
https://tensorflow.google.cn/guide/data
理由6:原生支持经典分类模型
TensorFlow 2.2 原生支持了多种经典分类模型,包括重量级的 EfficientNet(最新 nightly 已支持)、DenseNet、 ResNet、VGGNet 和轻量级的 MobileNet、Xception 等。你可以通过 tf.keras.applications 模块快速体验和使用这些经典模型。不论是在基于 ImageNet 上预训练的模型做迁移学习,亦或是从零到一的训练全新模型。
TensorFlow 2.2 内置分类模型
参考
https://tensorflow.google.cn/api_docs/python/tf/keras/applications
理由7:原生支持移动和物联网设备
在 TensorFlow 1.x 时代,SavedModel 转 tflite 格式部署到移动和物联网设备是可行的,但易用性不算很好。
TensorFlow 2.2 将 TF Lite 生态进一步整合到了原生框架中,并正式推出了 tf.lite 模块。现在,你可以直接调用 tf.lite.TFLiteConverter 实现SavedModel、HDF5和ConcreteFunctions 等多种模型格式转 tflite 格式。
同时,你还可以通过 tf.lite.Interpreter 定义模型在物联网设备上运行时的预测接口。这使得 TensorFlow 2.2 真正实现框架原生支持 AIoT。
参考
https://tensorflow.google.cn/api_docs/python/tf/lite
理由8 原生支持可视化数据、模型和训练
在深度学习模型训练和评估过程中,海量数据、高维模型、多种指标的变化对于算法工程师来说是十分重要的信息。并且,如果能够有高效的手段获取其中的数据洞察,将会非常有助于提升模型训练效率和经验积累。
TensorBoard 可视化工具包自推出后一直广受好评,它的出现使得开发者能够更加直观的了解数据和模型的质量,以及关键指标分布和变化。在今年的 TensorFlow Dev Summit 上,官方团队发布了TensorBoard 在线版 (https://tensorboard.dev/)。这使得 TensorFlow 用户不再需要独立安装 TensorBoard,而能够直接体验到 TensorFlow 生态中这一重要特性。
参考
https://tensorflow.google.cn/tensorboard
理由9:前沿探索量子机器学习
过量子力学的思想和模型来改进机器学习算法也属于量子机器学习的一部分。
量子机器学习自1988年首次提出细胞自动机的量子推广后,逐步发展出量子增强学习 (2008) 、HHL 量子算法 (2009) 、量子主成分分析 (2014) 、量子 SVM 和贝叶斯网络上的量子推断 (2014) 、量子推荐系统 (2016) 等经典算法的拓展。
虽然现阶段量子计算机和量子比特数量限制还无法大规模使用 QML,但作为最前沿的交叉学科,TensorFlow 2.2 也实现了对这一前沿领域的支持—— TensorFlow Quantum (TFQ) 。
基于 TFQ 实现的混合量子机器学习模型
参考
https://tensorflow.google.cn/quantum
理由10:企业版助力数字化转型
许多企业用户对于 TensorFlow 快速发展带来的 API 版本变化想必是心有余悸。一个好消息是此类用户将由官方团队“兜底”。 TensorFlow 企业版将提供长期的技术支持。
针对某些版本,谷歌将提供长达三年的补丁程序,所有补丁和错误修复将在 TensorFlow 主线代码存储库中提供。另外,谷歌还将向正在构建 AI 模型的公司提供来自 Google Cloud 和 TensorFlow 团队的工程协助。
TensorFlow 企业版优势
参考
https://cloud.google.com/tensorflow-enterprise
One More Thing
我希望不论是从业者,亦或是有志于投身 AI 的新同学,都能够勇敢踏出学习 AI 的第一步:快速上手一个 AI 框架—— TensorFlow 2.2 。同时,在 AI 理论积累和动手实战的基础上,持之以恒地学习,逐渐成长为一个玩转 AI 技术的 TFBoys / TFGirls 。
最后,打个小广告:为了系统化和全方面的分享这几年在 AI 落地实战中积累的的踩坑经验和 TensorFlow 2.2 的使用技巧,我在极客时间开设了课程《TensorFlow 2 项目进阶实战 》(http://suo.im/5Fh32t) 。
同时,课程中的项目实战代码也已开源 (https://github.com/DjangoPeng/tensorflow-101),欢迎有兴趣的同学关注和订阅!
向我提问吧!
看完这 10 个学好 TensorFlow 2.2 的理由,各位是否还有哪些疑惑或者问题,尤其是在 AI 技术落地和 TensorFlow 快速入门方面的?欢迎向我提问!在本篇推文文末留言你的提问,我们将筛选问题并在 6 月 18 日下周四 “码上作答” 第一期的下集为大家做出解答。期待看到大家的踊跃提问!(截止至 6 月 14 日周日下午 17:00 前)
附录:
我为大家整理好了一系列学习资料,马上一键到达!