https://github.com/Microsoft/CNTK
Revision 2e628cbefe2c0a5fb8ef00cf95c4b467d3e9c62b authored by Frank Seide on 04 September 2015, 02:35:17 UTC, committed by Frank Seide on 04 September 2015, 02:35:17 UTC
Added a completely new configuration language, which currently can be used in place of NDL, but eventually will power all configurations.
It supports infix expressions, recursive macros, arrays, and a few useful functions such as string replace.
It is called "BrainScript" (file extension .bs), where the name is meant to be reflective of our grand ambition
(whereas the file extension is reflective of where we stand today w.r.t. that grand ambition...).
As of now, BrainScript can be accessed for configuring networks through the new ExperimentalNetworkBuilder option.
A few ComputationNodes are still missing, and MEL may not work as node naming is not sorted out yet.

The core classes were refactored aiming at removing the pervasive template parameter <ElemType> (selecting float vs. double), aiming at making it feasible to wrap parts of CNTK as libraries.
ComputationNode has been disentanlgled, while consumers such as ComputationNetwork and SGD--which really should be agnostic to float/double--have been changed to use the agnostic interface (ComputationNodeBase) where possible, but the full separation will require many more steps.
Theoretically, once this is completed, it would be possible to mix float and double nodes in a single graph (through the use of still to be written typecast nodes).

The two variants of each Evaluate and ComputePartial have been unified across full-minibatch and per-frame operation through passing the range as a new FrameRange object that encodes both whether it is the full minibatch vs. single frame, as well as the number of slices in a minibatch.
Currently, the latter is passed through a member m_samplesInRecurrentStep, which now can be removed (currently it is kept for a runtime check to verify that this was done right--to be removed).

The LSTM test case was modified to initialize its parameters with CPU code that, unlike the GPU code, honors random seeds, making it resilient to evaluation-order changes (that BrainScript implies, for example).
The test case now has a BrainScript implementation (it is not default though; default remains the NDL version).

Further minor code refactoring.
1 parent 8e1c700
History
Tip revision: 2e628cbefe2c0a5fb8ef00cf95c4b467d3e9c62b authored by Frank Seide on 04 September 2015, 02:35:17 UTC
merged fseide/bs feature branch:
Tip revision: 2e628cb
File Mode Size
BrainScript
Common
DataReader
Demos
Documentation
ExampleSetups
MachineLearning
Math
Scripts
Tests
license
.gitattributes -rw-r--r-- 21 bytes
.gitignore -rw-r--r-- 2.6 KB
CNTK.sln -rw-r--r-- 22.3 KB
CppCntk.vssettings -rw-r--r-- 10.0 KB
Makefile -rw-r--r-- 13.2 KB
Makefile_kaldi.cpu -rw-r--r-- 8.2 KB
Makefile_kaldi.gpu -rw-r--r-- 9.4 KB
Makefile_kaldi2.cpu -rw-r--r-- 8.2 KB
Makefile_kaldi2.gpu -rw-r--r-- 9.1 KB
README -rw-r--r-- 4.7 KB
ThirdPartyNotices.txt -rw-r--r-- 2.1 KB
configure -rw-r--r-- 9.8 KB
kaldi_vars.mk -rw-r--r-- 927 bytes

README

back to top