-
Notifications
You must be signed in to change notification settings - Fork 0
CNTK FAQ
At this page we present the answers to some of the most common questions we get about CNTK and related Subjects.
CNTK, the Computational Network Toolkit, is a framework for deep learning. Although intended for neural networks, the learning machines are arbitrary in that the logic of the machine is described by a series of computational steps in a Computational Network. A Computational Network defines the function to be learned as a directed graph where each leaf node consists of an input value or parameter, and each non-leaf node represents a matrix or tensor operation upon its children. The beauty of CNTK is that once a computational network has been described, all the computation required to learn the network parameters is taken care of automatically. There is no need to derive gradients analytically or to code the interactions between variables for backpropagation.
We first created CNTK for ourselves. CNTK was developed for the fastest training on the biggest data sets. Many of Microsoft's critical services run on models trained with CNTK. The results were so positive, we wanted to share our toolkit with the world.
For mission critical AI research, we believe efficiency and performance are important criteria. CNTK was designed for peak performance for not only CPUs but also single-GPU, multi-GPU, and multi-machine-multi-GPU scenarios. Additionally, Microsoft’s 1-bit compression technique or Block momentum technique dramatically reduced communication costs -- enabling highly scalable parallel training on a large number of GPUs spanning multiple machines.
In addition to a wide variety of built-in computation nodes, CNTK provides a plug-in architecture allowing users to define their own computation nodes. So if your workload requires special customization, CNTK makes that easy to do. Readers are also fully customizable allowing support for arbitrary input formats.
Today CNTK supports the following algorithms:
- Feed Forward
- CNN
- RNN
- LSTM
- Sequence-to-Sequence.
CNTK is developed by Microsoft's Technology and Research division. Additionally, CNTK gets major contributions nearly all of Microsoft production teams.
The development of CNTK has been underway since late 2014.
September 2016, we plan to release CNTK as a library with the Reinforcement Learning pipelines enabled.
CNTK config language (NDL) is great, but I want more freedom in creating my network, creating new nodes, or streaming in my unique data format. Will CNTK support lower level programming, (via Python or other languages)?
September 2016 we plan to release the new CNTK APIs supporting both Python, C++, and .Net (C#) bindings, so you will be able to configure your networks, create new nodes, as well as programmatically feed the data from your own Python, C++, and .Net programs.
No. CNTK is used in production for the Speech Recognition as well as Image and Text training.
Using CNTK is easy and straightforward. Here are some ways to get started.
Getting Started
Additional Documentation
CNTK Configuration Reference
- CNTK Configuration File
- SimpleNetworkBuilder
- Network Definition with BrainScript
- Reader Configuration
- SGD Configuration
Using CNTK Models in Your Code
- Overview
- Nuget Package for Evaluation
- C++ Evaluation Interface
- C# Evaluation Interface
- Evaluating Hidden Layers
- C# Image Transforms for Evaluation
- C# Multi-model Evaluation
- Evaluate in Azure
Advanced topics
Licenses
Source Code & Development