Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Performance Encog vs Deeplearning4J

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

like image 541
jvh Avatar asked Feb 08 '23 01:02

jvh


2 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!

    http://deeplearning4j.org

    https://github.com/deeplearning4j

    https://github.com/deeplearning4j/nd4j

    https://github.com/deeplearning4j/libnd4j

There are nearly 2000 devs in Deeplearning4j's user support channel on Gitter. Please join us there if you have questions:

https://gitter.im/deeplearning4j/deeplearning4j

like image 156
racknuf Avatar answered Feb 09 '23 19:02

racknuf


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).

like image 21
erikd71 Avatar answered Feb 09 '23 20:02

erikd71