机器/深度学习majiang_algorithm、nGraph、Lore、MMdnn介绍

以下为你介绍的机器学习/深度学习软件都可用在Linux系统上:majiang_algorithm(麻将胡牌算法)、nGraph(深度神经网络模型编译器)、Lore(机器学习模型配置、部署简化框架)、MMdnn(用于转换深度神经网络模型的跨框架解决方案)。

1、majiang_algorithm(麻将胡牌算法)

麻将胡牌算法:

majiang_algorithm是带多张鬼牌的通用胡牌算法,采用查表方式,简单高效。

表生成:

在生成表的阶段,时间是不值钱的,所以生成方法我们可以任意穷举。

首先分为普通、风、箭三张表。

穷举出所有的key,比如普通表,就是000000000-444420000,因为每一种牌最大4张,且总和不超过14张牌。

对于每个key,生成这个key在不同鬼的情况下的胡牌信息列表。

胡牌信息列表的内容是,在N张鬼的情况下,这个key胡什么牌,并且是否有将。

例如1万2万5万5万:110020000,生成的胡牌信息有。

1万2万5万5万:鬼0 有将 胡3万(0个鬼的时候,这个牌胡3万,此时有将)。

1万2万5万5万:鬼1 无将 胡3万胡5万(1个鬼的时候,这个牌胡3万5万,此时无将)。

1万2万5万5万:鬼1 有将 胡了(1个鬼的时候,这个牌已经胡了(鬼变成3万),此时有将)。

1万2万5万5万:等等。

胡牌算法:

有了前面辛苦生成的表格,那么判断胡牌算法就很简单了。对玩家手上的牌进行编码,变成多个key和鬼牌总数。例如手牌如下:

机器/深度学习majiang_algorithm、nGraph、Lore、MMdnn介绍

得到key:110020000、020000000和鬼牌总数2。

对每个key查询表,得到对应的胡牌信息列表。

针对每组列表,过滤掉鬼牌总数>N的项以及没有胡的项,上面的例子就会有。

1万2万5万5万:鬼1 有将 胡了。

2筒2筒:鬼1 无将 胡。

简单递归下,看看几组胡牌信息列表里,是否满足鬼牌总数和只有一个将的约束。

如果有任意组合满足,则胡了,在上面的例子里,恰好满足条件,于是胡了。

总耗时:查表耗时*M + 递归M层分配鬼和将的耗时M是花色数目,M<=5。

查胡算法:

与胡牌算法类似,根据key查出胡牌信息列表。

简单递归下,找出满足鬼的总数和只有一个将的约束时,所有不能胡的胡牌信息里可胡牌的集合,就是这手牌能胡什么牌。

下载地址:https://github.com/esrrhs/majiang_algorithm

2、nGraph(深度神经网络模型编译器)

机器/深度学习majiang_algorithm、nGraph、Lore、MMdnn介绍

英特尔的人工智能产品团队宣布开源 nGraph,这是一个面向各种设备和框架的深度神经网络模型编译器。有了 nGraph,数据科学家能够专注于数据科学研发,不需要担心如何将 DNN 模型部署到各种不同设备做高效训练和运行。

nGraph 目前直接支持 TensorFlow、MXNet 以及 neon,并可间接地通过 ONNX 支持 CNTK、PyTorch、Caffe2。用户能够在不同的设备上运行这些框架:英特尔架构、GPU 和 英特尔 Nervana 神经网络处理器(NNP)。

为什么建立 nGraph:

当深度学习框架作为模型训练和推断的工具首次出现时,在设计上是围绕 kernel 为特定设备优化。结果,把深度学习模型部署到其它更先进的设备时,会在模型定义暴露出许多细节问题,从而限制了其适应性和可移植性。

使用传统的方法意味着算法开发者面临把模型升级到其他设备时的沉闷工作。使一个模型能够在不同框架上运行也非常困难,因为开发者必须把模型的本质从对设备的性能调整中分离出来,并转化到新框架中的相似运算,最终在新框架上为优选的设备配置做必要的改变。

我们设计的 nGraph 库充分地减少了这些工程的复杂性。虽然通过该项目以及英特尔的 MKL-DNN 这样的库,能够为深度学习原语提供优化核,但仍有多种编译器启发式的方法能够带来进一步的优化。

nGraph 是如何工作的?

安装 nGraph 库,并使用该库编写或编译一个框架来训练模型和执行模型推理。将 nGraph 指定为框架后端,以在任意支持的系统上用命令行运行该库。我们的中间表征(Intermediate Representation,IR)层可以处理所有的设备抽象细节,从而让开发者集中于数据科学、算法和模型的研究,不需要花费太多精力在写代码上。

从更加详细的角度来说:

nGraph 核心创建了计算过程的一种强类型和设备无关的无状态图表征。图中的每一个节点或运算对应计算的一个步骤,其中每个步骤从 0 或更多张量的输入中生成 0 或更多张量的输出。我们的思想是 nGraph 运算可以作为深度学习框架中的复杂 DNN 操作的构建模块,且它能根据需要而衡量是高效编译和推导训练计算还是推断计算。

我们为每个支持的框架开发了框架桥梁(framework bridge),它作为 nGraph 核心和框架之间的媒介起作用。目前我们已经开发了 TensorFlow/XLA、MXNet 和 ONNX 的框架桥梁。由于 ONNX 仅仅是一种交换格式,因此 ONNX 的桥梁将通过执行 API 进行增强。

在 nGraph 核心和多种设备之间工作的变换器有着类似的作用,变换器使用通用的和设备特定的图转换处理设备抽象。得到的结果是一个函数,可以从框架桥梁执行。变换器是可分配和可解除分配的,可按桥梁的方向读取和写入张量。我们目前已有英特尔架构、英特尔 NNP、英伟达 cuDNN 的变换器,并正积极开发着其它设备的变换器。

适用于nGraph的Python wheels

nGraph的Python wheels已经过测试,并在以下64位系统上受支持:

Ubuntu 16.04或更高版本,如Ubuntu 18.04、CentOS 7.6、Debian 10、macOS 10.14.3 (Mojave)。

下载地址:https://github.com/NervanaSystems/ngraph

3、Lore(机器学习模型配置、部署简化框架)

机器/深度学习majiang_algorithm、nGraph、Lore、MMdnn介绍

Lore 是一个 Python 框架,旨在让工程师更容易接受机器学习,让数据科学家更容易维护机器学习。

功能特性:

1]、模型支持使用数据管道对估算器进行超参数搜索。他们将有效地利用多个 GPU(如果可用)和几种不同的策略,并且因水平可伸缩性可以保存和分发。

2]、支持来自多个软件包的估算器,包括 Keras、XGBoost 和 SciKit Learn。它们都可以通过构建、调试或预测覆盖来进行分类,以完全自定义你的算法和架构,同时还可以从其他很多方面受益。

3]、管道可以避免训练和测试之间的信息泄漏,一条管道可以用许多不同的估算器进行实验。如果机器可用 RAM 空间不够,则可使用基于磁盘的管道。

4]、转化器标准化高级功能编程。例如,根据美国人口普查数据将美国名字转换为其统计年龄或性别,从自由格式的电话号码字符串中提取地理区号,常见的日期、时间和字符串操作可通过 pandas 得到有效支持。

5]、编码器为估算器提供足够的输入,并避免常见的缺失和长尾值问题。经过充分测试,它们可以帮助你避免从垃圾中检索信息。

6]、对于流行的 (No)SQL 数据库,整个应用程序以标准化的方式配置 IO 连接,对批量数据进行事务管理和读写优化,而不是使用典型的 ORM 操作。除了用于分发模型和数据集的加密 S3 buckets 之外,连接还共享一个可配置的查询缓存。

7]、对开发中的每个应用程序进行依赖关系管理,且可 100%复制到生产环境中。无需手动激活,没有破坏 Python 的环境变量或隐藏的文件。无需 venv、pyenv、pyvenv、virtualenv、virtualenvwrapper、pipenv、conda 相关知识。

8]、模型测试可在自己的持续集成环境中进行,允许代码和训练更新持续部署,而不增加基础架构团队的工作量。

9]、命令行、Python 控制台、jupyter 笔记本或 IDE 都有工作流支持。每个环境都可以为生产和开发配置可读的日志和时序语句。

创建一个Lore项目:

此示例演示了嵌套的转换器以及如何对具有first_name和response has_subscription列功能的postgres数据库users表使用lore.io,如果您不想创建数据库,则可以使用中等级别的免费数据库示例应用程序。

$ pip install lore

$ lore init my_app --python-version=3.6.4 --keras --xgboost --postgres

# fix up .env, config/database.cfg, circle.yml, README.rst

下载地址:https://github.com/instacart/lore

4、MMdnn(用于转换深度神经网络模型的跨框架解决方案)

机器/深度学习majiang_algorithm、nGraph、Lore、MMdnn介绍

MMdnn 是微软开源的一套帮助用户在不同深度学习框架之间进行互操作的工具,包括模型转换和可视化。目前支持在 Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch 和 CoreML 等框架之间进行模型转换。

MMdnn 是一个用于转换、可视化和诊断深度神经网络模型的综合跨框架解决方案。MMdnn 中的「MM」代表模型管理,「dnn」是「deep neural network」深度神经网络的缩写。

MMdnn 可将一个框架训练的 DNN 模型转换到成其他框架可用的模型。

主要特性如下:

模型文件转换器,转换 DNN 模型使其适合不同框架。

模型代码块生成器,为框架生成适合的训练或推断代码块。

模型可视化,可视化框架的 DNN 网络架构和参数。

模型兼容性测试(正在进行)。

手动安装:

您可以通过以下方式获得MMdnn的稳定版本:

pip install mmdnn

并确保已安装Python或通过以下方式尝试使用最新版本:

pip install -U git+https://github.com/Microsoft/MMdnn.git@master

下载地址:https://github.com/Microsoft/MMdnn

注明

以上就是机器/深度学习majiang_algorithm、nGraph、Lore、MMdnn的介绍内容,这些机器学习/深度学习软件都能使用在Linux操作系统中。

栏目相关文章