Monday, May 30, 2016

Java "Deep Learning" Library

If you are a Java (or Scala) (or maybe Clojure?) programmer interested in analytics, and in particular machine learning, you should take a look at Deeplearning4j (DL4J). Quoting their web site:
Deeplearning4j is the first commercial-grade, open-source, distributed deep-learning library written for Java and Scala. Integrated with Hadoop and Spark, DL4J is designed to be used in business environments on distributed GPUs and CPUs. Skymind is its commercial support arm.
In essence, DL4J is a library for building "deep" neural networks, where "deep" apparently means more than one hidden layer. The software is open source (Apache 2.0 license). There is some free support available (from the user community, and possibly the developers). Commercial users needing serious support apparently can buy a support contract from Skymind.

Now, I don't know much about neural networks, although I do have some interest. Right now, I don't have time to put DL4J through its paces. Someday, if I find the time, I'll probably post some observations here. Meanwhile, I did download and install DL4J, along with the examples they provide, and I ran several of the examples successfully (and none unsuccessfully).

Their web site is very well done, with more links to general resources, documentation and tutorials than I think I've seen for any open source project before. So if the notion of coding serious (not just toy) neural nets in a JVM language appeals to you, I think you'd be well served to check them out.


  1. I have used this for couple of small projects - it's good. If you are working within the spark framework in "Big Data" amd ML domain, I would suggest looking into Spark MLLib first before coming here, unless you want to do deep learning on spark. The other option for deep learning on spark is Google's newly open-sourced TensorFlow library (can also be used outside of spark).

    1. Samik: Thanks for the tips (and for confirming that DL4J works well). Nate Brixius has been doing a series of posts about TensorFlow. The first one is at I haven't looked carefully at TensorFlow yet, since I use R and not Python. Apparently you can use TensorFlow with R via the rPython package, but I'll probably wait until a "native" R package is available.

    2. Hi guys, Chris from DL4J here. Just wanted to chime in re: TensorFlow.

      We've had several people in our community ask about TensorFlow. From what I've heard, TensorFlow is best for researchers because Python makes it easy and quick to prototype + Google provides the latest and greatest algorithms. However, for production environments, we believe it's better to use Java since a production tool needs to work a web of software (like Hadoop and Spark which are Java based). DL4J makes this integration easy.

  2. thanks for sharing this article.The above article having a good and valuable information and your article way of writing is very good


If this is your first time commenting on the blog, please read the Ground Rules for Comments. In particular, if you want to ask an operations research-related question not relevant to this post, consider asking it on OR-Exchange.