Keras supports both TensorFlow and Theano as backend: what are the pros/cons of choosing one versus the other, besides the fact that currently not all operations are implemented with the TensorFlow backend?
It was announced on 2017-09-28 that Theano will be discontinued:
From here (Yoshua Bengio):
After almost ten years of development, we have the regret to announce that we will put an end to our Theano development after the 1.0 release, which is due in the next few weeks. We will continue minimal maintenance to keep it working for one year, but we will stop actively implementing new features. Theano will continue to be available afterwards, as per our engagement towards open source software, but MILA does not commit to spend time on maintenance or support after that time frame.
So TensorFlow is a better option.
If I were given the option, I would go with Theano.
- State of the art RNN implementations and API's, which TensorFlow unfortunately doesn't possess, and has a long way to go. And in a domain where RNN's are the trending rage, Theano has a big edge there.
- Very wide range of implementations. TensorFlow has a long way to catch up. A lot of recent ML models have been done with the help of Theano, so it is something like a standard when it comes to neural networks.
- Optimized and improved looping: Theano's scan is a wonderful way for looping in neural networks, which makes use of the awesome map-reduce framework. But, I'm pretty sure TensorFlow would improve on this as its creator Jeff Dean is the daddy of Map Reduce. However, as of now; it's Theano
- Huge edge when it comes to video analytics.
However, TensorFlow supports both the cpp and Python interfaces which might be an advantage with the cpp community. But, when it comes to ML and data science products, Python has been the standard, so it wouldn't be a huge edge IMO.
But, model deployment and ease of use in production is where TensorFlow has the real advantage. As it uses Eigen for improved and easy deployment, it would be a darling for engineers. If it gets compatible with Windows, then you'll see a huge migration. But, I've got used to the Python overhead, I can wait till it gets more polished.
So, Theano for now. I can happily wait for TensorFlow to catch up.
If you are deploying simple to average complexity neural networks, go with Tensorflow. If deep learning, then Theano.