https://github.com/Microsoft/CNTK
Revision 4affe72568ecff38c5908e41bc3814dba79b6a6a authored by Nikos Karampatziakis on 18 February 2017, 00:39:58 UTC, committed by Nikos Karampatziakis on 18 February 2017, 00:39:58 UTC
Squashed commit of the following:

commit f0250727423dcea2fa138e519562fc868b60633e
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 16:36:10 2017 -0800

    fix a typo

commit 87d4a2119fc0011bb3199c9dcefead913a92b358
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 16:23:20 2017 -0800

    Moved C++ test to use HTK deserializers

commit 7b52fe1e5de282787e3e59d1a798336976f3d331
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 16:07:23 2017 -0800

    final api for htk deserializers

commit e21495f3db074e2fa95ac30933925ed30262a7ba
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 15:19:20 2017 -0800

    test

commit e3951291d060acad2caf49e3a4d6781da354835a
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 14:45:06 2017 -0800

    fix

commit 3096607bd2fcbaa93e970daccdb503e29ac4d37c
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 14:27:27 2017 -0800

    Incorporated CR feedback.

commit 2e3c9d31fa1e4dc141fbc6f2ca3ce69d1b5ad855
Merge: 3e116ed e70eac3
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 09:45:00 2017 -0800

    Merge remote-tracking branch 'origin/master' into nikosk/iocleanup

commit 3e116ed79d35d788c5326eef4d93ad39f715983f
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Fri Feb 17 09:43:48 2017 -0800

    typo fix

commit 02587a5ef53ded988621ab9759f4507f69b72933
Merge: a01c137 721a6f7
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 20:25:48 2017 -0800

    Merge remote-tracking branch 'origin/master' into nikosk/iocleanup

commit a01c13727aeb4788ddebdfdbd05b64319dd08443
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 20:05:41 2017 -0800

    Removed dead code

commit 1e6f6f9c30edeea27d7f7fdd01baeaf8a3d590ec
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 19:56:10 2017 -0800

    Updated examples that use transforms

commit b40c71667300d0803e38f5b78cd8b68a6c5dd70d
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 19:43:12 2017 -0800

    pytests pass

commit a6f6af04d854f0a2cefc2f20142cf0164fadde32
Merge: 7bc0893 df46851
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 12:21:07 2017 -0800

    Merge branch 'mudithtk' into nikosk/iocleanup

commit 7bc08937eeee000682afe28405143896c563940b
Merge: d9b5fdf 0bf2f46
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 12:12:14 2017 -0800

    Merge remote-tracking branch 'origin/master' into nikosk/iocleanup

commit df468513c53a2a5189172045a6df91a699a564a8
Merge: 0bf2f46 15737ef
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 10:03:57 2017 -0800

    Merge branch 'muditj/HTKDeserializerPythonWrapper' of https://github.com/MSharman/CNTK into mudithtk

commit d9b5fdf0ebab2ff4175d7ae27d1e3cc52d1c195d
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 16 10:01:46 2017 -0800

    Various fixes

commit 45d149ef1013fc118de142d96c19110753331aab
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Sat Feb 11 17:16:47 2017 -0800

    added docs for HTK deserializers

commit 3baaaf019dd95990f2f8962e35b9bbd0f37f768b
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Sat Feb 11 17:00:54 2017 -0800

    update htk test to conform to new trainer

commit 9a39a41be1d2d553f9730dde1912eecbe0805dfb
Merge: 05d211b fd2e796
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Sat Feb 11 16:54:09 2017 -0800

    Merge remote-tracking branch 'origin/master' into nikosk/iocleanup

commit 05d211b3ffcb58c98f71d717b79cb8f30bada060
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Sat Feb 11 16:45:41 2017 -0800

    HTK deserializers working properly with a test

commit 910580b3df72f15846c9a3e65dced1b121c0a192
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 9 22:03:03 2017 -0800

    cleanup

commit bb17ae40818ca901d6c2fc09fd692be947e7bdc9
Merge: c920260 b159781
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 9 21:53:22 2017 -0800

    Merge remote-tracking branch 'origin/master' into nikosk/iocleanup

commit c92026038a6a194f996f7e64261378eb563d9659
Merge: 1db7eb8 74fa7f4
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 9 21:50:33 2017 -0800

    Merge remote-tracking branch 'origin/master' into nikosk/iocleanup

commit 1db7eb832f6c878aeb46faa015d21e55780bc219
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Thu Feb 9 17:24:58 2017 -0800

    All tests work

commit af6ee5af9ddd95677192f997a134276834cec537
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Wed Feb 8 22:34:18 2017 -0800

    All tests that should pass pass

commit 15737ef8437f8c47413f7479ba2549320fb4f0a6
Author: Mudit Jain <muditj@microsoft.com>
Date:   Tue Feb 7 13:45:41 2017 -0800

    Add Htkfeature and mlf deserializers

commit a8941ac82e8a028f4444e64e3dd826cbbe266761
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Mon Feb 6 10:14:15 2017 -0800

    image deserializer in C++

commit b599a14189a2c36b9a9c14df5d58fa8c577046b9
Author: Nikos Karampatziakis <nikosk@microsoft.com>
Date:   Mon Jan 30 17:39:10 2017 -0800

    Image transforms in c++
1 parent 648950f
Raw File
Tip revision: 4affe72568ecff38c5908e41bc3814dba79b6a6a authored by Nikos Karampatziakis on 18 February 2017, 00:39:58 UTC
HTK deserializers and Reader Transforms
Tip revision: 4affe72
README.md
**The [CNTK Wiki](https://github.com/Microsoft/CNTK/wiki) has all information on CNTK including [setup](https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-your-machine), [examples](https://github.com/Microsoft/CNTK/wiki/Examples), etc.**

Effective January 25, 2017 CNTK [1-bit Stochastic Gradient Descent (1bit-SGD)](https://github.com/Microsoft/CNTK/wiki/Enabling-1bit-SGD) and [BlockMomentumSGD](https://github.com/Microsoft/CNTK/wiki/Multiple-GPUs-and-machines#22-block-momentum-sgd) code is moved to a new Repository in GitHub. Read [this article](https://github.com/Microsoft/CNTK/wiki/Update-1bit-SGD-Submodule-Location) for details.

Give us feedback through these [channels](https://github.com/Microsoft/CNTK/wiki/Feedback-Channels).

# Latest news
***2017-02-13.* V 2.0 Beta 11 Release available at Docker Hub**  
CNTK V 2.0 Beta 11 Runtime packages are now available as [Public Images at Docker Hub](https://hub.docker.com/r/microsoft/cntk/).  
See more on CNTK as Docker Images in this [Wiki article](https://github.com/Microsoft/CNTK/wiki/CNTK-Docker-Containers).

***2017-02-10.* V 2.0 Beta 11 Release**  
Highlights of this Release:
* New and updated core and Python API features.
* New Tutorials and Examples:
  * [Transfer learning example to train custom image classifiers](https://github.com/Microsoft/CNTK/tree/v2.0.beta11.0/Examples/Image/TransferLearning).
* New [CNTK NuGet Packages](https://github.com/Microsoft/CNTK/wiki/NuGet-Package).
  * Note a *breaking change* due to Assembly Strong Name enabling. See [Release Notes](https://github.com/Microsoft/CNTK/wiki/CNTK_2_0_beta_11_Release_Notes).

See more in the [Release Notes](https://github.com/Microsoft/CNTK/wiki/CNTK_2_0_beta_11_Release_Notes).  
Get the Release from the [CNTK Releases page](https://github.com/Microsoft/CNTK/releases).

***2017-02-08.* V 2.0 Beta 10 Release available at Docker Hub**  
CNTK V 2.0 Beta 10 Runtime packages are now available as [Public Images at Docker Hub](https://hub.docker.com/r/microsoft/cntk/).  
See more on CNTK as Docker Images in this [Wiki article](https://github.com/Microsoft/CNTK/wiki/CNTK-Docker-Containers).

***2017-02-01.* V 2.0 Beta 10 Release**  
* New and updated core and Python API features ([Operators with UserFunctions](https://www.cntk.ai/pythondocs/extend.html), [Tensorboard support](https://github.com/Microsoft/CNTK/wiki/Using-TensorBoard-for-Visualization), [Python API Fast R CNN](https://github.com/Microsoft/CNTK/wiki/Object-Detection-using-Fast-R-CNN)).
* Improved speed of CrossEntropyWithSoftmax and ClassificationError for sparse labels.
* New Tutorials and Examples:
  * A Python version of the deconvolution layer and image auto encoder example was added ([Example **07_Deconvolution** in *Image - Getting Started*](https://github.com/Microsoft/CNTK/tree/v2.0.beta10.0/Examples/Image/GettingStarted)).
  * A Python distributed training example for image classification using AlexNet was added, cf. [here](https://github.com/Microsoft/CNTK/tree/v2.0.beta10.0/Examples/Image/Classification/AlexNet/Python)
  * [Basic implementation of Generative Adversarial Networks (GAN) networks](https://github.com/Microsoft/CNTK/blob/v2.0.beta10.0/Tutorials/CNTK_206_Basic_GAN.ipynb)
  * [Training with Sampled Softmax](https://github.com/Microsoft/CNTK/blob/v2.0.beta10.0/Tutorials/CNTK_207_Training_with_Sampled_Softmax.ipynb)
* New [CNTK NuGet Packages](https://github.com/Microsoft/CNTK/wiki/NuGet-Package).

See more in the [Release Notes](https://github.com/Microsoft/CNTK/wiki/CNTK_2_0_beta_10_Release_Notes).
Get the Release from the [CNTK Releases page](https://github.com/Microsoft/CNTK/releases).

***2017-01-25.* V 2.0 Beta 9 Release available at Docker Hub**  
CNTK V 2.0 Beta 9 Runtime packages are now available as [Public Images at Docker Hub](https://hub.docker.com/r/microsoft/cntk/).  
See more on CNTK as Docker Images in this [Wiki article](https://github.com/Microsoft/CNTK/wiki/CNTK-Docker-Containers).

See [all news](https://github.com/Microsoft/CNTK/wiki/News).

# What is The Microsoft Cognitive Toolkit

The Microsoft Cognitive Toolkit (https://www.microsoft.com/en-us/research/product/cognitive-toolkit/), 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. CNTK has been available under an open-source license since April 2015. It is our hope that the community will take advantage of CNTK to share ideas more quickly through the exchange of open source working code.

Wiki: Go to the [CNTK Wiki](https://github.com/Microsoft/CNTK/wiki) for all information on CNTK including [setup](https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-your-machine ), [examples](https://github.com/Microsoft/CNTK/wiki/Examples ), etc.

License: See [LICENSE.md](./LICENSE.md) in the root of this repository for the full license information.

Tutorial: [Microsoft Computational Network Toolkit (CNTK) @ NIPS 2015 Workshops](https://research.microsoft.com/en-us/um/people/dongyu/CNTK-Tutorial-NIPS2015.pdf)

Blogs:

* [Microsoft Computational Network Toolkit offers most efficient distributed deep learning computational performance](https://blogs.technet.com/b/inside_microsoft_research/archive/2015/12/07/microsoft-computational-network-toolkit-offers-most-efficient-distributed-deep-learning-computational-performance.aspx)
* [Microsoft researchers win ImageNet computer vision challenge (December 2015)](https://blogs.microsoft.com/next/2015/12/10/microsoft-researchers-win-imagenet-computer-vision-challenge/)

## Performance

Cognitive Toolkit (CNTK) provides significant performance gains compared to other toolkits [click here for details](https://arxiv.org/pdf/1608.07249.pdf). Here is a summary of findings by researchers at HKBU.

> * CNTK’s LSTM performance is 5-10x faster than the other toolkits.
> * For convolution (image tasks), CNTK is comparable, but note the authors were using CNTK 1.7.2, and current CNTK 2.0 beta 10 is over 30% faster than 1.7.2.
> * For all networks, CTNK's performance was superior to TensorFlow performance.

Historically, CNTK has been a pioneer in optimizing performance on multi-GPU systems. We continue to maintain the edge ([NVidia news at SuperComputing 2016](http://nvidianews.nvidia.com/news/nvidia-and-microsoft-accelerate-ai-together) and [CRAY at NIPS 2016](https://www.onmsft.com/news/microsoft-and-cray-announce-partnership-to-speed-up-deep-learning-on-supercomputers)).

 CNTK was a pioneer in introducing scalability across multi-server multi-GPU systems. The figure below compares processing speed (frames processed per second) of CNTK to that of four other well-known toolkits. The configuration uses a fully connected 4-layer neural network (see our benchmark [scripts](https://github.com/Alexey-Kamenev/Benchmarks)) and an effective mini batch size (8192). All results were obtained on the same hardware with the respective latest public software versions as of Dec 3, 2015.

![Performance chart](Documentation/Documents/PerformanceChart.png)

## Citation

If you used this toolkit or part of it to do your research, please cite the work as:

Amit Agarwal, Eldar Akchurin, Chris Basoglu, Guoguo Chen, Scott Cyphers, Jasha Droppo, Adam Eversole, Brian Guenter, Mark Hillebrand, T. Ryan Hoens, Xuedong Huang, Zhiheng Huang, Vladimir Ivanov, Alexey Kamenev, Philipp Kranen, Oleksii Kuchaiev, Wolfgang Manousek, Avner May, Bhaskar Mitra, Olivier Nano, Gaizka Navarro, Alexey Orlov, Hari Parthasarathi, Baolin Peng, Marko Radmilac, Alexey Reznichenko, Frank Seide, Michael L. Seltzer, Malcolm Slaney, Andreas Stolcke, Huaming Wang, Yongqiang Wang, Kaisheng Yao, Dong Yu, Yu Zhang, Geoffrey Zweig (in alphabetical order), ["An Introduction to Computational Networks and the Computational Network Toolkit"](https://research.microsoft.com/apps/pubs/?id=226641), Microsoft Technical Report MSR-TR-2014-112, 2014.

## Disclaimer

CNTK is in active use at Microsoft and constantly evolving. There will be bugs.

## Microsoft Open Source Code of Conduct

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
back to top