作者 |Vardan Agarwal
编译 |VK
起源 |Towards Datas Science
TensorFlow 是一个端到端的开源机器学习平台,可能执行一系列工作。它为初学者和钻研人员提供了一个易用性,能够用于不同的利用,如,但不限于,计算机视觉,自然语言解决和强化学习。
在计算机视觉畛域,咱们大多数人都相熟 TensorFlow 的外围以及 TensorFlow Lite 和 JS。它们用于在挪动设施和边缘设施上运行模型,为后者在 web 上运行模型。然而,TensorFlow 还提供了更多神秘的库,咱们将在本文中对此进行解释。
目录
- TensorFlow 模型优化工具包
- TensorFlow Graphics
- TensorFlow Federated
- TensorFlow Privacy
- TensorFlow Hub
TensorFlow 模型优化工具包
实时模型对于许多商业操作是必不可少的。MobileNet 的推理速度使它成为了众人注目的焦点,即便这意味着要就义一点准确性。
优化 TensorFlow 模型首先想到的是将其转换为 TensorFlow lite 服务。然而,这在桌面上不太好用,因为它是为 ARM neon 优化的。这篇问题对此进行了解释(https://github.com/tensorflow…),否则咱们须要进一步优化模型。模型优化工具箱能够帮忙咱们实现这些工作。依据其主页,它能够用于:
缩小云和边缘设施(如挪动设施、物联网)的提早和推理老本。
将模型部署到边缘设施,并限度解决、内存、功耗、网络应用和模型存储空间。
反对对现有硬件或新的专用加速器执行和优化。
它能够利用于曾经训练过的模型,也能够在训练期间用于进一步优化解决方案。在编写本文时,它提供了三种技术,以及其余一些正在进行的改良模型的技术。
修剪
第一种办法是权重剪枝。它的工作原理是删除层之间的一些连贯,从而缩小所波及的参数和操作的数量,从而优化模型。在训练过程中打消了不必要的张量。这有助于放大模型的大小,通过训练后量化能够进一步减小模型的大小。
我不会具体介绍每个函数的细节和代码,因为这会使文章太长。你能够参考这里进一步理解和这里的代码:https://www.tensorflow.org/mo…
量化
与只在训练期间进行的修剪不同,量化能够在训练和测试中进行。Tensorflow Lite 模型也被量化为应用 8 位整数,而不是通常应用的 32 位浮点。这进步了性能和效率,因为整数运算比浮点运算快得多。
然而,这是有代价的。量化是一种有损技术。这意味着先前从 -3e38 到 3e38 示意的信息必须从 -127 示意到 127。这回引入更多谬误。为了解决这个问题,能够在训练期间利用量化。
量化训练
通过在训练中利用量化,咱们迫使模型学习它将导致的差别并相应地采取行动。量化误差作为噪声引入,优化器试图将其最小化。用这种办法训练的模型具备与浮点模型相当的精度。很有意思的是,咱们能够比拟一下用这种办法创立的 Tensorflow-Lite 模型与一般模型。
要理解更多对于它的信息,请参考这里:https://blog.tensorflow.org/2…
对于它的代码,请看这里:https://www.tensorflow.org/mo…
训练后量化
尽管最好在训练期间利用量化,但有时这样做是不可行的,因为咱们可能有预训练好的权重可供使用。
更多信息能够在这里找到:https://blog.tensorflow.org/2…
以及代码:https://www.tensorflow.org/mo…
权重聚类
它将类似的权重组合起来,并用一个值替换它们。它能够设想成 JPEG 压缩。此外,因为类似的权重被插值到雷同的数目,它也是有损的。
权重矩阵本来存储浮点值。这些值被转换成整数,整数代表簇号。咱们再存储蕴含簇的查找表以便查问。这缩小了所需的空间,因为整数须要更少的存储空间。
如上面的示例所示,16 个 float-32 值被指定给 4 个 float-32 质心,层权重被转换为整数值。权重矩阵越大,节俭的空间就越大。
聚类利用于训练好的模型中,以找到质心。而后任何压缩工具都能够用来放大模型的大小。要理解它的详细信息,请参阅此处及其实现:https://www.tensorflow.org/mo…
能够联合不同的技术来进一步缩小提早,并且打算更多的办法,如他们的路线图中所探讨的那样:https://www.tensorflow.org/mo…。
TensorFlow Graphics
TensorFlow graphics 旨在将计算机视觉和计算机图形学联合起来,解决简单的三维工作。
计算机图形工作流须要三维对象及其在场景中的相对地位、对它们由灯光形成的材质的形容以及生成合成渲染的摄影机。另一方面,计算机视觉工作流将从图像开始,并尝试推导其参数。
这能够看作是一个自编码器,视觉零碎(编码器)将尝试查找参数,而图形系统(解码器)将基于这些参数生成图像,并与原始图像进行比拟。此外,该零碎不须要标记数据,也不须要以自我监督的形式训练。一些用处是:
- 变换 - 能够对对象执行旋转和平移等对象变换。这能够通过神经网络学习来准确地找到物体的地位。它对于须要准确预计这些物体地位的机械手臂很有用。
- 建模摄像机 - 能够设置不同的摄像机外部参数来扭转图像的感知形式。例如,更改摄影机的焦距会更改对象的大小。
- 资料 - 能够应用具备不同类型光反射能力的不同类型的资料。因而,创立的场景能够准确地模仿对象在真实世界中的行为。
- 三维卷积和池(点云和网格)- 它有三维卷积和池层,容许咱们对三维数据进行语义分类和宰割。
- TensorBoard 3D-3D 数据变得越来越广泛,能够用来解决从 2D 数据进行三维重建、点云宰割、3D 对象变形等问题。通过 TensorBoard 3D,这些后果能够可视化,从而更好地理解模型。
进一步浏览:https://blog.tensorflow.org/2…
TensorFlow Federated
这个库也能够用于计算机视觉以外的其余畛域。随着挪动设施和边缘设施数量的减少,产生了大量的数据。
联邦学习的指标是在扩散数据上执行机器学习,即在设施自身上!这意味着不须要向服务器上传大量(敏感)数据。它曾经在谷歌键盘上应用。
上面的视频解释了联邦学习的,从扩散数据到应用 TensorFlow federated。
https://youtu.be/89BGjQYA0uE
无关应用 TensorFlowFederated 进行图像分类的指南,请参阅上面链接的文章。
https://www.tensorflow.org/fe…
TensorFlow Privacy
通过隐衷攻打能够从经过训练的 ML 模型中提取敏感信息。Truex 等人,提出了一篇对于驱动它的因素的论文(https://arxiv.org/pdf/1807.09…)。如本文所示(https://www.cs.cmu.edu/~mfred…),这些模型甚至能够重建训练所根据的信息。
左侧是仅应用人名和模型重建的图像。左边的图像是原始图像。
同样,像 TensorFlow Federated 一样,这并不是计算机视觉所独有的。最罕用的技术是差分隐衷。来自维基百科:https://en.wikipedia.org/wiki…
差分隐衷一种公开共享数据集信息的零碎,通过形容数据集中组的模式,同时保留数据集中集体的信息。
假如敏感信息不会在数据集中齐全反复,通过应用差分隐衷模型,能够确保模型不会学习此类信息。
例如,假如有一个人与人之间聊天的数据集。当初,聊天中传递的敏感信息能够是明码、银行帐户详细信息等。因而,如果在这个数据集上创立了一个模型,则差分隐衷将确保该模型无奈学习这些细节,因为这些信息的数量很少。浏览这篇对于差分隐衷的文章,它还蕴含了执行它的代码。
http://www.cleverhans.io/priv…
TensorFlow Hub
你们中的大多数人肯定对这个库有所理解,所以我对它的介绍将十分简短。
TensorFlow Hub 是一个在 TensorFlow 中公布、发现和重用局部机器学习模块的平台。把它称为 TensorFlow 模型的 GitHub 是正确的。
开发人员能够共享他们预训练过的模型,而后能够被其他人重用。通过重用,开发人员能够应用较小的数据集训练模型,进步泛化能力,或者只是放慢训练速度。让咱们疾速理解一下现有的几种不同的计算机视觉模型。
- 图像分类 ——从 MobileNet 到 Inception 再到 EfficientNet,有一百多个可用于此工作的模型。说出你想要的任何型号,很可能会在那里找到它。
- 对象检测和宰割 - 同样,你须要的任何模型都能够在这里找到,特地是在 COCO 数据集上训练的 TensorFlow model-zoo 对象检测器的汇合中。Deeplab 架构在图像宰割畛域占据主导地位。还有大量的 TfLite 和 TensorFlow Js 模型可用。
- 图像款式化 - 图像款式化的不同的骨干,以及一个卡通感兴趣。
- 生成反抗网络 - 提供了像 Big GAN 和 Compare GAN 这样的 GAN 模型,在 ImageNet 和 Celeb 数据集上进行训练。还有一个无边界的 GAN,能够用来生成摄像机捕捉到的场景之外的区域。此外,他们中的大多数有一个 Colab Notebook,所以实现他们不会太难。
我刚刚形容了冰山一角。我甚至还没有探讨过很多对于模型匹配的问题。跳到他们的页面上理解更多:https://tfhub.dev/
你也能够在这里找到它的教程:https://www.tensorflow.org/hu…
TensorFlow 提供了更多的库,比方 TensorFlow Extended(https://www.tensorflow.org/re…),一个用于部署 ML 管道的库 Magenta(https://magenta.tensorflow.org/),一个用于生成音乐的库 (https://www.tensorflow.org/re…,等等。
请在这里查看残缺的列表:https://www.tensorflow.org/re…
原文链接:https://towardsdatascience.co…
欢送关注磐创 AI 博客站:
http://panchuang.net/
sklearn 机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/