Sunday, April 01, 2018

Java JDK 10

Java 10 was released for general availability a week ago.  I just installed it on macOS from I un-tar'ed the distribution, set JAVA_HOME to the Home directory in the distribution and put Home/bin first on my PATH. I used Java 10 with the latest version of IntelliJ with no problems: opened an existing Java project and switched the JDK to the newly installed JDK 10.

There are several nice features but the only ones I am likely to use are:

  1. Local variable type inference
  2. Better Docker container awareness in Linux
  3. Improved repl support

I have mixed feelings about the rapid new 6 month release cycles, but I understand the desire to compete with other JVM languages like Kotlin, Scala, Clojure, etc.

I have updating both of my Java books (Power Java and Practical Artificial Intelligence Programming With Java) on my schedule for the next 18 months. Java 11 is slated for release September 2018 and I will probably use Java 11 (whatever it will be!) for the updated books sine Java 11 will be a long term support release.

Sunday, February 11, 2018

Trying out the Integrated Variants library to explain predictions made by a deep learning classification models

"Explainable AI" for deep learning is required for some applications, at least explainable enough to get some intuition for how a model works.

The recent paper "Axiomatic Attribution for Deep Networks" describes how to determine which input features have the most effect on a specific prediction by a deep learning classification model. I used the library IntegratedGradients that works with Keras and another version is available for TensorFlow.

I modified my two year old example model using the University of Wisconsin cancer data set today. If you want to experiment with the ideas in this paper and the IntegratedGradients library, then using my modified example might save you some time and effort.