The Unreasonable Popularity of TensorFlow
In this post, I will look at how TensorFlow has gained momentum over competing projects. Unless you're living away from all of this on a beach (or under a rock if you wish), you already know TensorFlow is a Computational Graph framework, and you hear it being tossed around in the context of Deep Learning/Neural Networks. I have been an early adopter TensorFlow from the day it was released -- not very long ago -- in Nov. 2015. So, I could dismiss my excitement as arbitrary fan following, but I wanted to see what the data says.
To figure this out, I turned to StackOverflow. StackOverflow is a good mirror of community adoption of open source technologies. The number of questions asked could be roughly considered as a metric for user adoption/involvement/engagement. From my latest dump of StackOverflow, I consider number of posts tagged with 'tensorflow', and their growth over time. The chart speaks for itself.
Naturally, I was interested in finding out how TensorFlow fared compared to other related projects. I considered Caffe, Theano, and Torch as these are the most dominant Deep Learning frameworks. So how does that look?
Of course, StackOverflow is just one signal. You could look for engagement signals from mailing lists for these projects -- I see similar trends. Some projects (notably Torch and Caffe) also have discussions on Gitter -- although that's a little tricky to analyze. Another place to look at engagement statistics is Github. It turns out, TensorFlow was the most forked Github project of 2015. All that in a period of 2 months of its release in Nov 2015!
Notes: 1) I am not considering any of the wrapper libraries on top of these frameworks, such as Lasagne, Keras, TFLearn, or TensorFlow's own SKFlow, although they are interesting in their own right. 2) This post is purely looking at community interest or engagement. Soumith Chintala does a great job benchmarking frameworks, esp. for convnets. I believe performance gaps are transient esp. when there's a massive community interest. 3) Neon by Nervana is highly performant, but I don't see much grassroots community involvement (perhaps, I'm missing something?). 4) Special shout out to Torch devs who are really awesome at what they do and are extremely helpful. If I have to use anything other than TF, Torch would be my choice just for that. Even if it means having to code in Lua. But when it comes to getting it adopted in teams, I find there is massive resistance among devs if you ask them to learn a new language just for doing one thing.