机器学习和深度学习的重要性已毋庸置疑。 经过几十年的承诺,炒作和失望,两者都导致了实际应用。 我们还没有达到机器学习或深度学习应用程序完美的地步,但是许多确实很好。
在所有可用的优秀机器学习和深度学习框架中 ,TensorFlow是最成熟的,在研究论文中被引用最多(甚至不包括Google员工的引用),并且在生产中使用方面的故事也最好。 它可能不是最容易学习的框架,但它比2016年的框架要少得多。TensorFlow是许多Google服务的基础。
TensorFlow 2.0网站将该项目描述为“端到端开源机器学习平台”。 结果是TensorFlow已成为一个更全面的“工具,库和社区资源生态系统”,可帮助研究人员构建和部署AI驱动的应用程序。
TensorFlow 2.0有四个主要部分:
TensorFlow 2.0生态系统包括对Python,JavaScript和Swift的支持,以及对云,浏览器和边缘设备的部署。 TensorBoard(可视化)和TensorFlow Hub(模型库)是有用的工具。 TensorFlow Extended(TFX)支持端到端的生产流程。
过去,我回顾了TensorFlow r0.10 (2016)和TensorFlow 1.5 (2018)。 多年来,TensorFlow从一开始就发展成为基于具有高学习曲线和低级API的数据流图的机器学习和神经网络库。 TensorFlow 2.0不再仅仅是凡人的难题,现在具有高级Keras API以及在JavaScript中运行,在移动和嵌入式设备上部署以及在大型生产环境中运行的选项。
TensorFlow的比赛包括Keras (可能使用其它后端比TensorFlow), MXNet (与胶子 ), PyTorch , Scikit学习和星火MLlib 。 后两个主要是机器学习框架,缺少深度学习的功能。
您不必只选择一个。 在单个管道中使用多个框架是完全合理的,例如,使用Scikit-learn准备数据并使用TensorFlow训练模型。
TensorFlow 2.0注重简单性和易用性,并在任何平台上进行了更新,如渴望执行,直观的高级API和灵活的模型构建。 值得更深入地研究其中的前两个。
急切的执行意味着TensorFlow代码在定义时就运行,而不是将节点和边添加到要在以后的会话中运行的图形中,这是TensorFlow的原始模式。 例如,早期的“世界你好!” TensorFlow r0.10的脚本如下所示:
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>> exit()
请注意此处使用tf.Session()
和sess.run()
。 在TensorFlow 2.0中,默认的执行模式是默认设置,如下例所示。
TensorFlow 2.0中急切的执行。 该笔记本可以在安装了正确先决条件的Google Colab中或在其他地方运行的Jupyter Notebook中运行。
tf.keras
之前的两个示例都使用了低级的TensorFlow API。 有效TensorFlow 2.0的指南是使用高级tf.keras
API,而不是旧的低级API。 这将大大减少您需要编写的代码量。 您可以每层使用一行代码来构建Keras神经网络,如果利用循环结构,则可以更少。 下面的示例演示了在Google Colab中运行的Keras数据集和顺序模型API,这是运行TensorFlow示例和实验的便捷(免费)地方。 请注意,Colab提供了GPU和TPU实例以及CPU。
在撰写本文时, 从TensorFlow 1.14到TensorFlow 2.0的过渡状态混合在一起,如下面的屏幕快照所示。 当前有两个待办事项,正在执行23个任务,已完成34个任务。 正在进行的任务从根本没有进展(例如,当受让人退学时)到几乎完成(代码在存储库Master分支中有效,但尚未审查和部署)。
从https://github.com/orgs/tensorflow/projects/4跟踪从TensorFlow 1.14到TensorFlow 2.0的过渡状态。 该屏幕快照是在6月21日拍摄的,但是请注意,自4月17日以来该页面从未更新过。
与开放源代码项目的完整版本一样,TensorFlow 2.0对API进行了一些重大更改,这些更改需要对代码进行升级 。 幸运的是,有一个Python代码升级脚本 (随TensorFlow 2.0一起自动安装),还有一个API模块的兼容性模块( compat.v1
),无法通过使用字符串替换来简单升级。 运行升级脚本后,您的程序可能会在TensorFlow 2.0上运行,但是会有一些tf.compat.v1
命名空间的引用,您需要在闲暇时间对其进行修复,以保持代码干净。 此外,您可以将GitHub存储库上的Jupyter笔记本升级到TensorFlow 2.0 。
急切的执行模式的缺点是您可能会失去一些编译和执行流程图的速度。 有一种方法可以在不完全关闭急切执行模式的情况下tf.function
: tf.function
。
基本上,用@tf.function
注释函数时,它将被编译为图形,并且它及其调用的任何函数都将获得(可能)更快地执行,在GPU或TPU上运行或导出到SavedModel的好处。 tf.function
一个方便的新功能是AutoGraph ,它可以自动将Python控制流语句编译为TensorFlow控件操作。
我上一次进入TensorFlow时,有两种方法可以运行分布式训练:使用异步参数服务器和使用第三方Horovod项目,该项目是同步的并使用全约算法。 现在有五种本机TensorFlow分配策略 ,以及一个用于选择所需的API的tf.distribute.Strategy
,它允许您在多个GPU,多台机器或多个TPU之间分配训练。 该API还可以用于在不同平台上分发评估和预测。
TensorFlow现在支持五种本机分发策略,并为TensorFlow 2.0 beta的三种培训API提供了不同程度的支持。
TensorFlow.js
TensorFlow.js是一个库,用于在JavaScript中开发和训练机器学习模型并将其部署在浏览器或Node.js中。 在TensorFlow.js, ml5.js之上还构建了一个高级库,该库隐藏了张量和优化器的复杂性。
在浏览器中 ,TensorFlow.js支持移动设备以及桌面设备。 如果您的浏览器支持WebGL着色器API,则TensorFlow.js可以使用它们并利用GPU。 与CPU后端相比,这可以使速度提高100倍。 TensorFlow.js演示程序在具有GPU的计算机上的浏览器中以惊人的速度快速运行。
在Node.js上,TensorFlow.js可以使用已安装的TensorFlow版本作为后端,也可以运行基本的CPU后端。 CPU后端是纯JavaScript,并且不可并行化。
您可以运行官方TensorFlow.js模型 , 转换Python模型 ,使用转移学习将模型定制为您自己的数据,以及直接在JavaScript中构建和训练模型 。
TensorFlow Lite是用于设备上推理的开源深度学习框架。 目前,它为iOS,ARM64和Raspberry Pi构建模型。
TensorFlow Lite的两个主要组件是解释器和转换器。 解释器在许多不同的硬件类型上运行经过特殊优化的模型。 转换器将TensorFlow模型转换为供解释器使用的有效形式,并且可以引入优化以改善二进制大小和性能。 有用于图像分类,对象检测,智能回复生成,姿势估计和分割的预训练模型。 还有用于手势识别,图像分类,对象检测和语音识别的示例应用程序。
TensorFlow Extended ( TFX )是用于部署生产机器学习管道的端到端平台。 一旦训练了模型,就应该考虑TFX。 管道包括数据验证 , 功能工程 , 建模 , 模型评估 , 服务推断以及管理在线,本机移动和JavaScript目标的部署。 下图显示了TFX管道的各个组件如何组合在一起。
TensorFlow扩展框图。
Swift for TensorFlow
TensorFlow的Swift是用于深度学习和差异化编程的下一代(仍然不稳定)平台。 它具有类似于Python TensorFlow的高级培训API,但它也支持自动区分功能,该功能内置于带有@differentiable
属性的Swift编译器的fork中。 Swift for TensorFlow可以导入和调用Python代码,从而简化了从Python TensorFlow的过渡。
当前有七个支持TensorFlow的工具 。 它们是TensorBoard,一组用于TensorFlow图的可视化工具; TensorFlow Playground,可调整的在线神经网络; CoLab,又名Colaboratory,一个免费的在线Jupyter Notebook环境; 假设分析工具,可帮助您从TensorBoard,CoLab或Jupyter Notebooks中探索和调试模型; ML Perf,广泛的机器学习基准套件; XLA(加速线性代数),一种针对特定领域的线性代数编译器,可优化TensorFlow计算; 以及TFRC(TensorFlow研究云),这是一个由1,000多个云TPU组成的集群,研究人员可以免费申请使用。
总体而言,TensorFlow 2.0 Beta在许多方面都取得了长足的进步。 tf.keras
API和积极的执行模式,该核心框架更易于学习,使用和调试。 您可以有选择地标记要编译为图形的函数。 编排分布式训练和推理的方法有五种。
有完整的组件TFX,用于构建从数据验证到推理模型管理的机器学习管道。 您可以在浏览器或Node.js上运行TensorFlow.js。 您可以在移动和嵌入式设备上运行TensorFlow Lite。 最后,Swift for TensorFlow将为模型构建开辟新的可能性。
From: https://www.infoworld.com/article/3405641/tensorflow-2-review-easier-end-to-end-machine-learning.html