CNTK is actually pretty damn good. It just lacks a good scripting interface. They're adding one though.
The network description language (now 'BrainScript') is a far nicer way to specify networks than the approaches used by any other network. Especially for recurrent networks. In CNTK you can just say `X = FutureValue(Y)` or `X = PastValue(Y)`. It's so convoluted in TensorFlow I actually never worked out how to do it.
It also has their fancy 1-bit SGD stuff, but I doubt many people use that, and it has a more restrictive license anyway.
The network description language (now 'BrainScript') is a far nicer way to specify networks than the approaches used by any other network. Especially for recurrent networks. In CNTK you can just say `X = FutureValue(Y)` or `X = PastValue(Y)`. It's so convoluted in TensorFlow I actually never worked out how to do it.
It also has their fancy 1-bit SGD stuff, but I doubt many people use that, and it has a more restrictive license anyway.