Microsoft Cognitive Toolkit (CNTK) - 简介

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

什么是 Microsoft Cognitive Toolkit (CNTK)?

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

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

CNTK 的功能

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

内置组件

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

  • 我们可以实现 CNN、FNN、RNN、批量规范化和带注意力的序列到序列。

  • 它为我们提供了从 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 加载我们的模块。 BrainScript 也受 2.0 版支持。
它可在 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。