I think CNTK and Tensorflow and Theano, too, have a declarative approach, representing the computation via a computational graph. Which in my opinion is beneficial for research. But for a hacker or a software developer who wants to build an application, this creates an unnecessarily steep learning curve and feels unintuitive. (I have the feeling, that this an important reason why Keras, Lasagne and co. exists)<p>Leaf takes an imperative approach and explores an easier API (only Layers (Functions)[1] and Solvers (Optimizer Algorithms)), reusability through modularity and abstractions that keep the implementation and concepts to a minimum or rather abstractions that feel as familiar to a hacker as possible.<p>For future versions e.g., we want to explore what is practically possible with auto-differentiation via dual numbers and differentiable programming.<p>[1]: <a href="http:&#x2F;&#x2F;autumnai.com&#x2F;leaf&#x2F;book&#x2F;deep-learning-glossary.html#Layer" rel="nofollow">http:&#x2F;&#x2F;autumnai.com&#x2F;leaf&#x2F;book&#x2F;deep-learning-glossary.html#La...</a>