Microsoft Cognitive Toolkit 简明教程

Microsoft Cognitive Toolkit (CNTK) - Introduction

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

What is Microsoft Cognitive Toolkit (CNTK)?

Microsoft Cognitive Toolkit (CNTK),以前称为 Computational Network Toolkit,是一个免费、易于使用、开源、商业级别的工具包,使我们能够训练深度学习算法,以像人脑一样学习。它使我们能够创建一些流行的深度学习系统,如 feed-forward neural network time series prediction systems and Convolutional neural network (CNN) image classifiers

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

CNTK’s Features

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

Built-in components

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

  2. 我们可以实现卷积神经网络、前馈神经网络、循环神经网络、批归一化和带注意力机制的序列到序列网络。

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

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

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

  6. 对于海量数据集,CNTK 内置了经过优化的读取器。

Usage of resources efficiently

  1. 通过 1 位 SGD,CNTK 为我们在多 GPU/机器上,通过高精度提供并行化。

  2. 为了将最大模型放入 GPU 内存中,它提供了内存共享和其他内置方法。

Express our own networks easily

  1. CNTK 从 Python、C++ 和 BrainScript 提供用来定义网络、学习器、读取器、培训和评估的完整 API。

  2. 使用 CNTK,我们可以通过 Python、C++、C# 或者 BrainScript 轻松地评估模型。

  3. 它同时提供了高级和底层 API。

  4. 基于数据,它能够自动塑造推理。

  5. 它完全优化了符号递归神经网络 (RNN) 循环。

Measuring model performance

  1. CNTK 提供多项构成部分来衡量您构建的神经网络的性能。

  2. 生成您的模型及其相关优化器的日志数据,我们可以使用该日志数据监测培训流程。

Version 1.0 vs Version 2.0

下表比较了 CNTK V1.0 和 V2.0:

Version 1.0

Version 2.0

它于 2016 年发布。

它对 1.0 版本进行了重大重写,并且在 2017 年六月发布。

它使用了一种名为 BrainScript 的专属脚本语言。

它的框架功能可以使用 C++、Python 进行调用。我们可以轻松地使用 C# 或 Java 加载我们的模块。BrainScript 也支持 2.0 版本。

它可以在 Windows 和 Linux 系统上运行,但不能直接在 Mac OS 上运行。

它也可以在 Windows(Win 8.1、Win 10、Server 2012 R2 和更高版本)和 Linux 系统上运行,但不能直接在 Mac OS 上运行。

Important Highlights of Version 2.7

Version 2.7 是 Microsoft Cognitive Toolkit 的最新主版本。它完全支持 ONNX 1.4.1。以下是这个 CNTK 最新版本的几个重要要点。

  1. 完全支持 ONNX 1.4.1。

  2. 为 Windows 和 Linux 系统都支持 CUDA 10。

  3. 支持在 ONNX 导出中提前的循环神经网络 (RNN) 循环中。

  4. 它能够以 ONNX 格式导出超过 2GB 的模型。

  5. 它在 BrainScript 脚本语言的培训操作中支持 FP16。