CNTK — Computational Network Toolkit
The Computational Network Toolkit (CNTK) is a software package that makes it easy to design and test computational networks such as deep neural networks. A computational network is a style of computation where data flows through a graph and computations happen in the nodes of the graph. The goal of a computational network is to take feature data, transform the data through a network of simple computations, and then produce one or more outputs. The output is often some sort of decision based on the input features. A computational network can take many forms such as feed-forward, recursive or convolutional and includes various forms of computations and non-linearities. The network’s parameters are optimized to produce the “best” possible outcome for a given set of data and an optimization criteria.
CNTK has 5 primary features:
- CNTK is a general solution for training and testing many kinds of neural networks
- A user specifies a network using a simple text configuration file. The configuration file specifies the type of network, where to find the input data, and how to optimize the parameters. All of these design parameters are fixed in the configuration file.
- CNTK is designed to seamlessly put as many of the computations onto a GPU, if available, as possible. These types of computational networks are easy to vectorize and fit nicely onto GPUs. CNTK is compatible with GPUs that support the CUDA programming environment.
- CNTK automatically calculates the needed derivatives in order to efficiently perform the necessary optimizations. Networks are composed of many simple elements, and CNTK can keep track of the details to insure that the optimization is done correctly.
- CNTK can be extended by adding small amounts of C++ code to implement the necessary blocks. New data readers, non-linearities, and objective functions are easy to add.
[adsense size='1']
Consider the work needed to build a non-standard neural network such as the variable parameter DNN. Conventionally, one needs to design the network, derive the derivatives needed to optimize the network, implement the algorithm, and then run the experiments. These steps are error prone and time consuming. With CNTK, however in many cases, you only need to write a simple configuration file.
CNTK, the Computational Network Toolkit by Microsoft Research, is a unified deep-learning toolkit that describes neural networks as a series of computational steps via a directed graph. In this directed graph, leaf nodes represent input values or network parameters, while other nodes represent matrix operations upon their inputs. CNTK allows to easily realize and combine popular model types such as feed-forward DNNs, convolutional nets (CNNs), and recurrent networks (RNNs/LSTMs). It implements stochastic gradient descent (SGD, error backpropagation) learning with automatic differentiation and parallelization across multiple GPUs and servers.
[adsense size='2']
CNTK has been available under an open-source license since April 2015.
To use CNTK you need to either download the executable binaries or download the source code and compile it on your machine. There are three main tasks (or actions) that are supported by CNTK:
- Train – Define a network and train it to produce a trained model using training data
- Evaluate – Test a trained model to assess its performance using test data
- Deploy – Use a trained model, e.g. in your own solution, to classify new instances
You can install the complete source code of CNTK and build the binaries on your machine. Also regular binary drops of the CNTK executables, including sample data and sample models are provided.
Binary Installation of CNTK
If you just want to download the latest precompiled binaries to your machine, follow the instructions here:
Installation of the CNTK codebase
If you want to take a look at the CNTK codebase, compile CNTK yourself, make changes to the CNTK codebase and contribute these changes back to the community, these are the pages for you:
[adsense size='3']
Gloss