I am currently just getting started in this area due to my interest in AI and I am not quite sure which route to choose.
I can give a quick comparison on Leaf vs. TensorFlow - although this might seem somewhat biased.
We like what the Google engineers did on TensorFlow and share a lot of similar ideas on how future Machine Learning should be structured and implemented. Especially that in the end it is just a performant pipeline for numeric information processing.
We feel that the biggest difference (besides the different stages of the project) is the language and the ecosystem that it embraces. We are strong believers in Rust and think that it might have good chances to succeed in the long run - which we outline in more detail in the Q&A[1].
Due to your question I would recommend picking up on the basic concepts of machine intelligence and then going with whatever ecosystem fits the task/stack. Might become similar to choices of web frameworks in the next couple of years. I think Neon[2] - as a Python framework - seems to be easy and performant as well.
[1]: https://github.com/autumnai/leaf#why-rust [2]: https://github.com/NervanaSystems/neon
Something like Tensor Flow has a lot of mechanics you have to understand before getting started, and it's "lower-level" than other ML libraries. And I definitely wouldn't advise you to use "deep learning" as your first ML model. It's hard to understand, and the result of training it is hard to interpret.
I spent about a month trying different tools and liked the understandability of Weka. Scikit-learn calls out to C for the heavy lifting, which is great but it's not exactly easy to read and understand the code.
Dist-Belief (TensorFlow's predecessor) was oriented around layers (as Leaf is) but TensorFlow (like Theano) is graph/flow-based rather than layer-based. I think in particular the layer-based approach makes it awkward to represent more complicated models since not every model can be decomposed into backward/forward passes.
Do you worry that by adopting a layer-based paradigm you are boxing yourself in? A graph-based approach does seem more flexible (and distributable across machines).
I think there is still a lot of room for improvement for layer-based networks, but even if the graph-based approach will become more prelevant I think the Rust trait system gives us great tools to migrate and reuse a lot from our layer based approach.
It sounds like performance is important to you. Are there any plans to add GPU paths soon? If it's CUDA, are you going to use cuDNN?
Otherwise, it's great to see such initiatives in Rust. I'm unsure if there's an equivalent that implements more traditional ML algorithms (logistic regression, decision tree, random forest, SVM, etc.)
[1] https://github.com/autumnai/leaf/commit/58bfa92abd5721eae116...
[0] http://deeplearning.net/wp-content/uploads/2013/03/dlsvm.pdf
I was pretty excited about the tensorflow announcement but I'm actually saddened that it might cast a shadow over this library, which in my opinion brings more to the arena (e.g. improvements on the current scripting approach of theano, torch et. al)
Your product, Autumnai, sounds exciting as well
We love Rust for a lot of reasons, but couldn't really fit them all in the Readme ;)
That was fast. (Like, I know that's a documentation change, but stil.)
Even the development of Rust may not very high enough compared with Java/Go(I do not sure), but we can keep the core as simple and steady, and use high-level language such as Python/R to implement the API.
Hope to hear more wonderful news about this Project.