We are working on a project in Java using neural networks. We want to test different network structures on our datasets. Now we evaluate which of the Java Neural Networks is the best in terms of performance. We are evaluating Encog, Neuroph and DL4J. Can you please tell us some good resources or your own experiences about this? Thanks
3 Answers
Deeplearning4j creator here:
Encog was written by Jeff Heaton in the early 90s, and was the standard Java DL framework for a long time. I do not believe that Encog handles distributed computing, works with GPUs, Hadoop, Spark or Kafka, or takes into account many of the algorithmic advances in DL since 2006. (Jeff, correct me if I'm wrong!)
Deeplearning4j does all those things. It works on distributed CPUs or GPUs using Spark as an access layer. It's certified on CDH5 and soon on HDP... And it includes implementations of LSTMs (RNNs), deep convolutional nets, RBMs, DBNs and word2vec, among other neural nets. It is currently the most popular DL tool for the JVM, and one of the top 5 DL libraries in the world.
Deeplearning4j is powered by the numerical computing lib ND4J, or n-dimensional arrays for Java. Basically, we ported Numpy to the JVM. That makes DL4J extensible, and you will see us add other algos like reinforcement learning in the near future. ND4J, in turn, runs on libND4J, a C++ library that makes the computation fast. We also built the vectorization library, Canova, that takes any type of data and turns it into a vector that neural nets can understand. We're trying to solve some of the ETL problems upstream from NNs.
Neuroph has strong visualization, but I am not in a position to judge the rest of their framework, so I will let them speak for themselves!
https://github.com/deeplearning4j
There are nearly 2000 devs in Deeplearning4j's user support channel on Gitter. Please join us there if you have questions:

- 444
- 3
- 12
I only have some experience with Deeplearning4j and Encog in the java world, and I think it very much depends on what your goal is. Deeplearning4j is certainly the most sophisticated framework of the 2; it has awesome tools, it works with GPUs, it supports things like LSTMs and Convolutional NNs, it's already set up for distributed training, etc. But as sophisticated and cool as it is, it can also be a bit of a PITA. When the homepage wants you to use a specific IDE and directs to lengthy installation guides of depending projects, you know it'll not be very straightforward. But it's worth it if you need it.
That said, in some cases there's still a lot to be said for Encog. It very easily integrates with pretty much any java project; it's just one .jar to include and off you go. It's very fast and uses your CPU cores very efficiently, it has a very nice and easy to understand API. If you need a java library to efficiently implement a feed-forward NN, or if you want to learn a bit more about working with machine-learning in general, I can't recommend Encog enough. When you run into limitations of Encog, try Deeplearning4j or look a bit beyond java and try something like Tensorflow (which has some java support too).

- 279
- 2
- 5
-
This is where I aborted --> When the homepage wants you to use a specific IDE and directs to lengthy installation guides of depending projects, you know it'll not be very straightforward – Nostalgic Feb 07 '23 at 06:25
I can tell you my experience.
Back in 2015 I was looking for a good Java Framework for Deep Learning. After an initial research I came across Encog. I soon realized it lacked many components of modern neural nets, i.e., it was quite outdated and also I had a lot of trouble even setting it up (it is not very flexible). Btw it does allow parallel computation on CPUs.
So I decided to write my own framework which I still use and works well. Then I came across deeplearning4j and I can tell you it is quite complete and does very fast computation. I would say if you want to look at what neural nets frameworks looked back 15 years ago use Encog, otherwise there is no reason why use it,i.e. use deeplearning4j, or try some of the python DL frameworks.

- 1