Getting Started with Deep Learning in Java Using Deep Netts (Part 2)August 03, 2022
Deep Netts is a deep learning development toolkit that enables Java developers to easily add modern AI to their apps. It provides a deep learning IDE and a Java-native deep learning library for embedding AI models into Java apps.
In part 1, we looked at the Deep Netts Community Edition, which is capable of solving basic machine learning problems, and provides a standard set of features.
If you have more complex challenges, more data, and need better performance or just want friendly tools to quickly try and learn AI, you should take a look at Deep Netts Professional Edition.
Download & Installation
- Download Deep Netts from the official download page.
- Run Maven installation scripts provided by the downloaded package to install Deep Netts JARs into your local Maven repo.
A detailed step by step installation guide is available here.
Note that the free download is fully functional and that it can be used for development. If you build a working prototype, it is possible to get a free low-volume production license.
Example: Hand-Written Digits Recognition
This example shows how to build a deep learning model in Java that can learn how to classify images, given the set of example images with corresponding category labels/classes.
The data set consists of 60000 images of handwritten digits. Each image is size of 28x28 pixels. Few sample images are shown in the image below.
As you can see, there is a lot of variation in each digit, and it would be impossible to come out with some set of rules to recognize these digits - that's why we want to build a model which will be capable to extract and learn patterns from these examples.
The following code snipet loads images and corresponding labels that will be used to train/build the model.
ImageSet imageSet = new ImageSet(imageWidth, imageHeight); imageSet.setInvertImages(true); imageSet.loadLabels(new File(labelsFile)); imageSet.loadImages(new File(trainingFile), 1000);
Convolutional neural networks are type of deep learning models which are capable to learn patterns in image pixels, and they will be used to demonstrate how Deep Netts can be used to accomplish this.
The image bellow shows the architecture of a typical convolutional neural network which consists of a few blocks of convolutional and pooling operations which perform feature detection/extraction, followed by the fully connected layers that perform classification.
// create convolutional neural network architecture ConvolutionalNetwork neuralNet = ConvolutionalNetwork.builder() .addInputLayer(imageWidth, imageHeight) .addConvolutionalLayer(12, 5) .addMaxPoolingLayer(2, 2) .addFullyConnectedLayer(60) .addOutputLayer(labelsCount, ActivationType.SOFTMAX) .hiddenActivationFunction(ActivationType.RELU) .lossFunction(LossType.CROSS_ENTROPY) .randomSeed(123) .build();
Deep Learning IDE
Deep Netts IDE provides visual tools and wizards that simplify building, debugging, and experimenting with various AI-related development activities.
Not only does it increases productivity in AI development, but it also helps developers to better understand the functioning of deep learning and problems they experience.
It is built on top of Apache NetBeans, following proven practices in UX and architecture.
Differences Compared to Community Edition
The professional edition provides tools and features that can significantly improve and simplify building your AI models.
- Multi threading support. Faster execution, both training and inference
- IDE with visual tools and debugger. Highly productive environment, enables understanding and fixing models and data.
- Improved algorithms. And other features that provide faster training and higher accuracy.