CNTK v.2.0 Release Notes
This is the first production release of the Microsoft Cognitive Toolkit V2. We want to thank everybody who provided valuable feedback and contribution. This release would not have happened without them.
Highlights of this Release
- CNTK backend for Keras
- Extremely fast binary convolution with Halide
- Java API
CNTK backend for Keras
We are happy to bring CNTK as a backend for Keras as a beta release to our fans asking for this feature. While there is still feature and performance work remaining to be done, we appreciate early feedback that would help us bake Keras support. For installation instructions and additional details, see Using CNTK with Keras.
Binary convolution with Halide
This release includes an example that implements training of a binary convolution network (see BinaryConnect by Courbariaux et al.), and a highly optimized native C++ implementation for fast evaluation of binary convolution models. The C++ binary convolution implementation utilizes the Halide framework for making optimal use of multi-threading and vector instructions available on modern CPUs. It runs up to 10x faster than an equivalent convolution network trained and evaluated at 32-bit floating point precision.
CNTK Java API
Starting from CNTK V.2.0 RC 3, a Java API is added to support model evaluation in Java on Windows and Linux. Note that the API is still experimental and subject to change. Feedback from the community is greatly appreciated. See the details at this page.
New additional features
- Random variables can now be used as a part of the graph. The following are now under the
cntk.random
module:uniform
,normal
,bernoulli
, andgumbel
as well as their corresponding ones with_like
(e.g.uniform_like
). - New learner: Universal learner uses a CNTK graph as the update mechanism.
- New high-level
train()
andtest()
functions that wrapTrainer
,training_session
, andEvaluator
. For usage examples see Examples/1stSteps and Tutorials/CNTK_200_GuidedTour.ipynb. training_session
,train()
, andtest()
now also accept data in the form of numpy/scipy arrays (in addition to data reader). Built on the basis of the new classMinibatchSourceFromData
that wraps numpy/scipy arrays in a reader.
Breaking changes
This release contains the following breaking changes:
- C++
ReaderCrop
API:cropSize
,sideRatio
,areaRatio
andaspectRatio
now takestd::pair
instead ofscalar
.cropSize
: takeswidth
andheight
.sideRatio
,areaRatio
andaspectRatio
takemin
andmax
values.
- Starting from CNTK V.2.0 RC3,
cntk.ops.input
andcntk.ops.sequence.input
have been deprecated. We have reverted back to usinginput_variable
andsequence.input_variable
. The difference from the oldinput_variable
behavior is thatcntk.ops.input_variable
no longer has a dynamic axis by default. source
andmb_size
parameters ofTestConfig
andCrossValidationConfig
have been renamed tominibatch_source
andminibatch_size
. Deprecation messages are shown if the old parameters are used.
CNTK NuGet package
A new set of NuGet Packages (version 2.0.0) is provided with this release.