机器/深度学习ONNX、TensorFlow Lite、Pyro、Tangent介绍

以下为你介绍的机器学习/深度学习软件都可用在Linux系统上:ONNX(Open Neural Network Exchange,神经网络开发框架互通生态)、TensorFlow Lite(谷歌移动端深度学习框架)、Pyro(基于 Python 的深度概率编程语言)、Tangent(用于自动微分的 Python 库)。

1、ONNX(Open Neural Network Exchange,神经网络开发框架互通生态)

机器/深度学习ONNX、TensorFlow Lite、Pyro、Tangent介绍

ONNX,即 Open Neural Network Exchange ,是微软和 Facebook 发布的一个深度学习开发工具生态系统,旨在让 AI 开发人员能够随着项目发展而选择正确的工具。

ONNX 所针对的是深度学习开发生态中最关键的问题之一,在任意一个框架上训练的神经网络模型,无法直接在另一个框架上用。开发者需要耗费大量时间精力把模型从一个开发平台移植到另一个。因此,如何实现不同框架之间的互操作性,简化从研究到生产的路径,成为了重中之重。

ONNX 的工作原理是:

实时跟踪某个神经网络是如何在这些框架上生成的,接着,使用这些信息创建一个通用的计算图,即符合ONNX 标准的计算图。这样做行得通,是因为在计算方面,这些框架产生的最终结果都非常接近,虽然更高级的表达不同。

ONNX 目前支持 Caffe2、PyTorch、Microsoft Cognitive Toolkit、Apache MXNet 等工具。

安装:

Conda可用conda-forge提供ONNX的二进制版本:

conda install -c conda-forge onnx

Source:

您需要安装protobuf和numpy才能构建ONNX,获得这些依赖关系的一种简单方法是通过Anaconda:

#使用conda-forge protobuf,因为protoc不附带默认值

conda install -c conda-forge protobuf numpy

然后,您可以从PyPi安装ONNX(注意:为onnx-ml设置环境变量ONNX_ML=1):

pip install onnx

您还可以通过源代码在本地构建和安装ONNX:

git clone https://github.com/onnx/onnx.git

cd onnx

git submodule update --init --recursive

python setup.py install

注意:在非Anaconda环境中安装时,请确保在运行onnx的pip安装之前先安装Protobuf编译器。例如,在Ubuntu上:

sudo apt-get install protobuf-compiler libprotoc-dev

pip install onnx

安装后,运行:

python -c "import onnx"

验证它是否有效,请注意,该命令不适用于源检出目录,在这种情况下,您会看到:

ModuleNotFoundError: No module named 'onnx.onnx_cpp2py_export'

转到另一个目录以修复此错误。

下载地址:https://github.com/onnx/onnx

2、TensorFlow Lite(谷歌移动端深度学习框架)

TensorFlow Lite 是一款 TensorFlow 用于移动设备和嵌入式设备的轻量级解决方案。

TensorFlow 可以在多个平台上运行,从机架式服务器到小型 IoT 设备。但是随着近年来机器学习模型的广泛使用,出现了在移动和嵌入式设备上部署它们的需求。而 TensorFlow Lite 允许设备端的机器学习模型的低延迟推断。

设计初衷:

轻量级:允许小 binary size 和快速初始化/启动的设备端机器学习模型进行推断。

跨平台:运行时的设计使其可以在不同的平台上运行,最先允许的平台是安卓和 iOS。

快速:专为移动设备进行优化,包括大幅提升模型加载时间,支持硬件加速。

现在,越来越多移动设备内置了专门的自定义硬件以高效处理机器学习工作负载。TensorFlow Lite 支持安卓神经网络 API,以充分利用新的可用加速器。

当加速器硬件不可用时,TensorFlow Lite 返回至经优化的 CPU 执行操作,确保模型仍然可在大量设备上快速运行。

架构:

下图展示了 TensorFlow Lite 的架构设计:

机器/深度学习ONNX、TensorFlow Lite、Pyro、Tangent介绍

组件包括:

TensorFlow 模型(TensorFlow Model):训练后的 TensorFlow 模型,保存在磁盘中。

TensorFlow Lite 转换器(TensorFlow Lite Converter):该程序将模型转换成 TensorFlow Lite 文件格式。

TensorFlow Lite 模型文件(TensorFlow Lite Model File):该格式基于 FlatBuffers,经过优化以适应最大速度和最小规模。

然后将 TensorFlow Lite 模型文件部署到移动 App 中:

Java API:安卓设备上适用于 C++ API 的便利封装。

C++ API:加载 TensorFlow Lite 模型文件,启动编译器。安卓和 iOS 设备上均有同样的库。

编译器(Interpreter):使用运算符执行模型。解释器支持选择性加载运算符;没有运算符时,编译器只有 70KB,加载所有运算符后,编译器为 300KB。这比 TensorFlow Mobile(具备一整套运算符)的 1.5M 要小得多。

在选择的安卓设备上,编译器将使用安卓神经网络 API 进行硬件加速,或者在无可用 API 的情况下默认执行 CPU。

开发者还使用 C++ API 实现自定义 kernel,它可被解释器使用。

模型:

TensorFlow Lite 已经支持多个面向移动端训练和优化的模型:

MobileNet:一种能够识别超过 1000 种不同物体的视觉模型,专为移动端和嵌入式设备设计。

Inception V3:一种图像识别模型,功能上类似于 MobileNet,但能提供更高的准确率(当然模型也更大)。

Smart Reply:一种设备端对话模型,能对接收到的会话聊天信息提供触发性应答。第一方和第三方通信 App 可在 Android Wear 上使用该特性。

Inception v3 和 MobileNet 都在 ImageNet 数据集上训练过,你可以通过迁移学习轻松地在自己的图像数据集上重新训练这些模型。

下载地址:https://gitee.com/mirrors/tensorflow

3、Pyro(基于 Python 的深度概率编程语言)

机器/深度学习ONNX、TensorFlow Lite、Pyro、Tangent介绍

Pyro 是 Uber AI 实验室开源的一款深度概率编程语言(PPL),基于 Python 与 PyTorch 之上,专注于变分推理,同时支持可组合推理算法。Pyro 能够实现灵活而富有表现力的深度概率建模,将现代深度学习和贝叶斯建模的优点结合起来。旨在加速上述技术的研究与应用,更大地惠及人工智能社区。

设计目标:

通用性:Pyro 可表征任何可计算的概率分布。

可扩展性:Pyro 可以很小的开销扩展到大型数据集。

最轻量:Pyro 由一个强大的、可组合的抽象化小核心构成,灵活且可维护。

灵活性:Pyro 的目标是在你想要的时候实现自动化,在你需要的时候进行控制。

实现方式:

通用性:通过从一种通用性语言(任意的 Python 代码)开始迭代和递归,然后添加随机采样、观测和推理。

可扩展性:通过建立现代黑箱优化技术,其使用数据的小批量进行近似推理。

最轻量:Pyro 是由少量强大而可组合的抽象概念实现的。任何繁重的工作都会尽可能用 PyTorch 和其它的库完成。

灵活性:使用高级的抽象概念表达生成和推理模型,同时允许专家自定义推理。

安装方式:

先安装 PyTorch,再通过 pip:

Python 2.7.*:

pip install pyro-ppl

Python 3.5:

pip3 install pyro-ppl

Install from source:

git clone git@github.com:pyro-ppl/pyro.git

cd pyro

git checkout master  # master is pinned to the latest release

pip install .

下载地址:https://github.com/pyro-ppl/pyro

4、Tangent(用于自动微分的 Python 库)

机器/深度学习ONNX、TensorFlow Lite、Pyro、Tangent介绍

Tangent 是一个免费、开源的新 Python 库,用于自动微分。和目前已有的机器学习库不同,Tangent 是一个源到源(source-to-source)的系统,利用 Python 函数 f 生成一个新的 Python 函数,来计算 f 的梯度。这为用户提供了更好的梯度计算可视化,使用户可以容易地对梯度进行编辑和调试。Tangent 在调试和设计机器学习模型上有如下特征:

易于调试反向传播过程。

快速编辑和调试梯度。

正向模式(Forward mode)自动微分。

高效的 Hessian 向量内积(Hessian-vector products)。

代码优化。

安装:

安装Tangent的最简单方法是使用pip:

pip install tangent

我们很快就会有一个conda程序包。

用法:

切线具有单功能API:

import tangent

df = tangent.grad(f)

如果要在输出Tangent时生成导数函数,请打印输出:

import tangent

df = tangent.grad(f, verbose=1)

这是IPython控制台中的切线。

机器/深度学习ONNX、TensorFlow Lite、Pyro、Tangent介绍

下载地址:https://github.com/google/tangent

注明

以上就是机器/深度学习ONNX、TensorFlow Lite、Pyro、Tangent的介绍内容,这些机器学习/深度学习软件都能使用在Linux操作系统中。

栏目相关文章