Microsoft 认知工具包 (CNTK) - 简介


在本章中,我们将了解什么是 CNTK、它的特性、1.0 版本和 2.0 版本之间的区别以及 2.7 版本的重要亮点。

什么是微软认知工具包 (CNTK)?

微软认知工具包(CNTK),以前称为计算网络工具包,是一个免费、易于使用、开源、商业级的工具包,使我们能够训练深度学习算法,像人脑一样学习。它使我们能够创建一些流行的深度学习系统,例如前馈神经网络时间序列预测系统和卷积神经网络(CNN)图像分类器

为了获得最佳性能,其框架函数是用 C++ 编写的。虽然我们可以使用C++调用它的函数,但最常用的方法是使用Python程序。

CNTK的特点

以下是最新版本的 Microsoft CNTK 中提供的一些特性和功能:

内置组件

  • CNTK 具有高度优化的内置组件,可以处理来自 Python、C++ 或 BrainScript 的多维密集或稀疏数据。

  • 我们可以通过注意力机制实现 CNN、FNN、RNN、Batch Normalization 和 Sequence-to-Sequence。

  • 它为我们提供了从 Python 在 GPU 上添加新的用户定义核心组件的功能。

  • 它还提供自动超参数调整。

  • 我们可以实施强化学习、生成对抗网络 (GAN)、监督学习和无监督学习。

  • 对于海量数据集,CNTK内置了优化的阅读器。

有效利用资源

  • CNTK 通过 1 位 SGD 在多个 GPU/机器上为我们提供高精度的并行性。

  • 为了适应 GPU 内存中最大的模型,它提供了内存共享和其他内置方法。

轻松表达我们自己的网络

  • CNTK 拥有完整的 API,可用于定义您自己的网络、学习者、读者、Python、C++ 和 BrainScript 的培训和评估。

  • 使用 CNTK,我们可以轻松地使用 Python、C++、C# 或 BrainScript 评估模型。

  • 它提供高级和低级 API。

  • 根据我们的数据,它可以自动形成推论。

  • 它具有完全优化的符号循环神经网络 (RNN) 循环。

测量模型性能

  • CNTK 提供了各种组件来衡量您构建的神经网络的性能。

  • 从您的模型和关联的优化器生成日志数据,我们可以用它来监控训练过程。

1.0 版与 2.0 版

下表比较了 CNTK 1.0 和 2.0 版本:

1.0版本 2.0版本
它于 2016 年发布。 它是对 1.0 版本的重大重写,于 2017 年 6 月发布。
它使用一种名为 BrainScript 的专有脚本语言。 其框架功能可以使用C++、Python调用。我们可以轻松地用 C# 或 Java 加载我们的模块。2.0 版也支持 BrainScript。
它可以在 Windows 和 Linux 系统上运行,但不能直接在 Mac OS 上运行。 它还可以在 Windows(Win 8.1、Win 10、Server 2012 R2 及更高版本)和 Linux 系统上运行,但不能直接在 Mac OS 上运行。

2.7 版本的重要亮点

2.7 版是 Microsoft Cognitive Toolkit 的最后一个主要发布版本。它完全支持 ONNX 1.4.1。以下是 CNTK 最后发布版本的一些重要亮点。

  • 完全支持 ONNX 1.4.1。

  • 支持 Windows 和 Linux 系统的 CUDA 10。

  • 它支持 ONNX 导出中的高级循环神经网络 (RNN) 循环。

  • 它可以以 ONNX 格式导出超过 2GB 的模型。

  • 它支持 BrainScript 脚本语言的训练动作中的 FP16。