3

Recently I decided to learn MXNet, as some code I need to use, is written using this API.

However, I would like to know which are the advantages and disadvantages of MXNet compared to the other Deep Learning Libraries out there.

obelix
  • 880
  • 2
  • 16
  • 43
  • 1
    Its still too early to compare mxnet, but its certainly more resource efficient than tensorflow. See: https://medium.com/@julsimon/keras-shoot-out-tensorflow-vs-mxnet-51ae2b30a9c0 – olive_tree Jan 13 '18 at 00:43

1 Answers1

5

Perhaps the biggest reason for considering MXNet is its high-performance imperative API. This is one of the most important advantages of MXNet to other platforms. Imperative API with autograd makes it much easier and more intuitive to compose and debug a network. PyTorch also supports imperative API, but MXNet is the only platform AFAIK that supports hybridization, which effectively allows your imperative model to be converted to a symbol for similar performance to symbolic API. Here is a link to tutorials on Gluon, MXNet's imperative API: http://gluon.mxnet.io/

Given that you're using an example code, it is possible that the example was written using symbolic API. You may notice MXNet's advantage in symbolic API when training on many GPUs. Otherwise you won't notice much of a difference (except perhaps in some memory usage).

Tensorflow does have a one year head-start to MXNet and as a result it has a larger user base, but it only supports symbolic API (imperative API is very new and is only meant for experimentation), which is significantly harder to debug a network when you run into issues. However MXNet has quickly caught up in features and with 1.0 release, I don't think there is anything in TF that MXNet doesn't support.

Sina Afrooze
  • 960
  • 6
  • 11
  • @Sinaafoorze How is the Python API? Or is the focus on other languages? – Moondra Jan 15 '18 at 02:46
  • 1
    Python is the best supported API for MXNet training. In fact the imperative API has very limited support in other languages. The typical workflow of a deep-learning project would be to do the training in Python, export the trained model and perform inference in you language of choice (python, cpp, java, scala, R) – Sina Afrooze Jan 15 '18 at 19:03
  • @Sinaafoorze Thanks going to test it out. – Moondra Jan 18 '18 at 20:55
  • Actually, TensorFlow is still way ahead in the extent and maturity of its API. TensorFlow also has much more activity on its github project than MXNet has on its project. I worry that it will be hard for MXNet to catch up. – Christopher Barber Feb 27 '18 at 18:28
  • Thanks @ChristopherBarber for your insight. Being quite familiar with both TF and MXNet Gluon, I do not agree with TF being "way ahead" in extent. However, I do agree with TF having a larger following community (and hence more activity on GitHub). I feel the gap should shrink as people become familiar with the ease of Gluon API (which is just as easy but much faster than [PyTorch](http://borealisai.com/2018/02/16/standardizing-a-machine-learning-framework-for-applied-research/)) – Sina Afrooze Feb 28 '18 at 19:38
  • 2
    I really like MXNet and Gluon a lot, but there really is no question that TensorFlows API is much more complete than MXNet's and also that it is much better documented. And it is not just the size of the community that is at issue; there are clearly a lot more developers working on the TensorFlow implementation than our working on MXNet. There are also important basic features missing from MXNet. For instance, you cannot write custom operators for MXNet in C++ without forking the entire source and making your own custom version; that makes it very hard to share custom operators across projects – Christopher Barber Mar 01 '18 at 18:02
  • I tried both TF and MxNet and decided spend more time on MxNet. For me, small memory usage and C++ binding is a plus. But later TF has C++ binding too. TF for now is ahead due to the fact that a lot of models are written in TF when they get published. But the API change is so fast... – user2189731 Mar 30 '18 at 03:09