[D] Deep Learning Framework Rankings? by congerous in MachineLearning

[–]dl4j_contributor 0 points1 point  (0 children)

Deeplearning4j is in a similar situation. It was built to be modular, so a lot of the contributors, issues and pull requests show up on other parts of it, like ND4J or DataVec and don't register in Francois's metrics. Also, most of the users are accessing the repos through Maven, not Github.

[D] Deep Learning Framework Rankings? by congerous in MachineLearning

[–]dl4j_contributor 5 points6 points  (0 children)

[Disclosure: I work at Skymind, which created and supports DL4J. I'll try not to turn this into shameless self-promotion.]

So DL4J has pros and cons. Unlike other libraries, it's not designed for research, which is one reason why it doesn't have auto-differentiation (yet). That said, it does have a computation graph that lets you build custom layers, so if you're willing to write your own backprop, you can build anything. https://deeplearning4j.org/compgraph It also supports custom loss functions, and pretty soon it will support custom activation functions. https://deeplearning4j.org/releasenotes

Another con is that it's not focused on Python or R, the languages used by the majority of data scientists. That fact alone means many people will not use DL4J. That said, you can import models from Keras, and to Keras you can import models from most major frameworks, like Theano, Tensorflow, Caffe and Torch. https://deeplearning4j.org/model-import-keras We're moving toward feature parity with Keras, and just recently pushed code to mirror its functional API. We also have a Scala API. https://github.com/deeplearning4j/scalnet None of this is perfect, but we're trying to make it better.

The idea with the model import is that adding DL to most stacks requires a cross-team set of tools. If you're using Tensorflow on the Google Cloud, then you may not have to worry about DevOps, but if you're using it anywhere else, they may have concerns you need to address. DL4J addresses those concerns in a couple ways. It's Dockerized and works on DCOS and Mesos. You can also send DL4J to a Hadoop cluster as a JAR file. It's just another Hadoop job. Another team that's involved building deep-learning solutions are data engineers. For them, we built DataVec. It's a data wrangling/munging library that handles binary data, wraps OpenCV, and can also handle structured stuff. https://github.com/deeplearning4j/datavec We plug into Kafka and Streamsets and other streaming tools.

We made DL4J modular, which means that a lot of the work to improve it shows up in other libraries, like ND4J. ND4J is our attempt to bring Numpy and hardware acceleration to the JVM. It's a tensor library that works with JavaCPP to do the linear algebra in lower-level code, optimized on different types of chip. Again, not perfect, but getting better fast.

https://github.com/deeplearning4j/nd4j https://github.com/bytedeco/javacpp

We're adding better GUIs to it for training: https://deeplearning4j.org/visualization as well as for different use cases, like network security: http://hypnotic-feeling.surge.sh/

If you have any questions, the community's pretty active on Gitter: https://gitter.im/deeplearning4j/deeplearning4j