TensorFlow Disappoints – Google Deep Learning falls shallow
Google recently open-sourced its TensorFlow machine learning library, which aims to bring large-scale, distributed machine learning and deep learning to everyone. But does it deliver?
There was something more troubling as I went through these, however (and this relates back to my first 2 points at the beginning of the article). Although I was learning how to use TensorFlow, I was finding it difficult to figure out when I would use it. Skimming through the rest of the tutorials, I could see that TensorFlow could be used to implement recurrent neural networks, convolutional neural networks, logistic regression, even Mandelbrot Set generation and visualization (which muddied the picture even further for me, to be honest), but there didn't seem to be any silver bullet (or anything close) as to why I would choose TensorFlow for a given project. I didn't get it. So I dug around further.
Some quick Google-fu and it became evident that I was all alone. There were experts everywhere espousing the benefits of TensorFlow. Well, actually, they were talking about how good it was, but with little more substance than you could find on the TensorFlow website. But at least there were reasons given as to why we should use it... right? Well, actually, not so much. I couldn't find a single use case specifically for TensorFlow anywhere. Most "tech experts" were busy focusing on how TensorFlow would "change everything," and speaking vaguely about how AI and machine learning would now be accessible to anyone who wanted to use it (finally!), and how it can run on a plethora of hardware. Honestly, it seemed like a lot of people were doing their very best to not offend Google, without really understanding what's going on, and perhaps just having heard about deep learning for the first time last week. And no, despite my academic tendencies, I will not be citing anyone here. And I still didn't get it.
And what about deep learning, specifically? TensorFlow can execute in heterogeneous CPU/GPU environments, so there's that. But so can everything else in this space (see here, here, here, here, and here). The code (subjectively) isn't any easier to read than, say, Theano (from the experience I have). Also, not getting it.
Then there's the (lack of) scalability issue. In its whitepaper, TensorFlow is described (in the title, mind you) as "large-scale machine learning on heterogeneous distributed systems." But the open source version executes on a single node. Self-distribution? Maybe I'm old school, but GPU acceleration does not a distributed system make. I know, I know, the proprietary version is distributed, and there's a good chance that future open source releases will be as well. But until then... that's right. Still not getting it.
So, maybe it doesn't do anything that can't be done elsewhere, or elsewhere on numerous machines, but maybe it's quicker. But then again, maybe not. This benchmark report (which has not been independently verified), comparing TensorFlow and some other popular frameworks, does not bode well for the newcomer. The TensorFlow team is rumored to be working on fixing these (and really, would you need a rumor to convince you that Google is actively and continuously looking to improve its products? The Google apps on my Nexus update twice a day!), and so this may simply be a bug to be ironed out of newly-released code. If this is the case, and TensorFlow can keep up with the others, or even surpass them, well, then, we would probably be having a different conversation.
If there is one thing it may have going for it already is its ability to execute on multiple devices and platforms. In all honesty, if I ever need to implement a neural network on an Android device, I'll give TensorFlow a serious (and probably first) look. Also, and this isn't a cop out (because it is important, dammit!), the documentation (for the Python API) is pretty great, which is more than can be said for a lot of newly open-sourced code.
Look, Google is at the forefront of technological innovation, there is no denying that. As other researchers often note, Google is 5+ years ahead of everyone. In everything. All the time. And I will continue to wave my multicolored flag in their honor (but I refuse to say 'Alphabet'). Something just seems a bit... off here. It's like a new pizzeria opening on the block, except it has pretty much the same menu as other shops, doesn't taste quite as good, and costs a little more, too. You might try it out, but something tells me you and your friends end up back at your favorite spot soon enough. Incidentally, I tried for a "deep dish learning" joke here, but just couldn't work it in.
I'm not saying don't use TensorFlow. I'm not even saying that I won't use it. It's just that, well, I'm struggling to figure out when or why I would use it, to be honest. Maybe I'm missing something really obvious that someone else could point out for me. I'd be happy to be proven wrong (or less-correct, relatively speaking). Let us know what you are using TensorFlow for, and what your thoughts on it are.
Bio: Matthew Mayo is a computer science graduate student currently working on his thesis parallelizing machine learning algorithms. He is also a student of data mining, a data enthusiast, and an aspiring machine learning scientist.
- Popular Deep Learning Tools – a review
- Top 5 arXiv Deep Learning Papers, Explained
- Decision Boundaries for Deep Learning and other Machine Learning classifiers