2017-11-06 Update: Deeplearning4J

One thing I did this weekend was get permalinks working again on my blog. I got an SSL certificate from Let’s Encrypt several months ago, and I was not able to get permalinks to work. It bothered me for the longest time. Problem solved.

Not much on the Clojure API front.

I did look at Deeplearning4J, a deep learning framework written in Java. I cloned their repo of examples, and I got some of them working with gradle files, and learned a bit more about Gradle in the process. You can use a GPU, or a CPU. No messing with CUDA if you don’t want to.

There is even a Clojure wrapper for Deeplearning4J as well.

I had a post about using CPUs and GPUs from JVM languages for math/science/AI a while back. Since then, I have gotten both Neanderthal and Deeplearning4J to work on my system. I did mention Bytedeco, which is used by Deeplearning4J and a few other libraries. I looked at some of the Javadoc, and they use a LOT of static methods (see here for an example). I may leave Bytedeco for others and use some of the higher-level libraries, like Deeplearning4J. I think a lot of static methods is not idiomatic Java. I might consult “Effective Java” later for a second opinion.

I am going to include below one of the build.gradle files that I used to get some of the Deeplearning4J examples to work.

You’re welcome.

Image from the Trebizond Gospels, a 12th-century Byzantine manuscript housed at The Walters Art Museum, manuscript information here, image from World Document Library, image assumed allowed under Fair Use.

2 Replies to “2017-11-06 Update: Deeplearning4J”

  1. Hi, I found this via google alerts. I figured I would comment here. It looks like you ignored our suggestion on the website to reach out via the live chat. We could have cleared a lot of your concerns up here.
    I will try my best to help you here but my suggestion would be to interact with us directly when you can next time.

    We maintain that whole stack including javacpp. Sam, the author is in our support channel as well.
    The reason there are static methods everywhere is because c++ allows for one off methods.
    It’s not a problem of the author’s. Javacpp is a c++ transpilation tool. It has to do *something* to approximate that.

    Beyond that in general, yes please stick to higher level libraries where poossible.
    If you have other questions, please reach out via the live chat. Thanks!

  2. I want to get my inspiration from really significant phrases said by truly terrific men and women like “Whatever is reasonable is true, and whatever is true is reasonable”, would you know the place I’m able to find thematic compiltaions of those?

Comments are closed.