Deeplearning4j创建者在这里:
Encog是由Jeff Heaton在90年代初编写的,并且长期以来一直是标准的Java DL框架。我不相信Encog处理分布式计算,可以与GPU,Hadoop,Spark或Kafka一起使用,或者考虑到自2006年以来DL中的许多算法进步。(杰夫,如果我错了,请纠正我!)
Deeplearning4j完成所有这些事情。它适用于使用Spark作为访问层的分布式CPU或GPU。它已在CDH5上认证,很快就在HDP上认证......它包括LSTM(RNN),深度卷积网,RBM,DBN和word2vec以及其他神经网络的实现。它是目前最流行的JVM DL工具,也是全球前5大DL库之一。
Deeplearning4j由数值计算lib ND4J或Java的n维数组提供支持。基本上,我们将Numpy移植到JVM。这使DL4J可扩展,你会看到我们在不久的将来添加其他算法,如强化学习。反过来,ND4J在libND4J上运行,这是一个使计算速度快的C ++库。我们还构建了矢量化库Canova,它可以获取任何类型的数据并将其转换为神经网络可以理解的向量。我们正试图解决NN上游的一些ETL问题。
Neuroph具有很强的可视性,但我无法判断其余的框架,所以我会让他们自己说话!
http://deeplearning4j.org
https://github.com/deeplearning4j
https://github.com/deeplearning4j/nd4j
https://github.com/deeplearning4j/libnd4j
在Gitter上,Deeplearning4j的用户支持频道有近2000个开发人员。如果您有任何疑问,请加入我们:
https://gitter.im/deeplearning4j/deeplearning4j
我可以告诉你我的经历。
早在2015年,我一直在寻找一个优秀的深度学习Java框架。经过初步研究,我遇到了Encog。我很快意识到它缺少现代神经网络的许多组件,即它已经过时了,而且我甚至设置它也有很多麻烦(它不是很灵活)。顺便说一下,它确实允许在CPU上进行并行计算。
所以我决定编写自己的框架,我仍然使用并且运行良好。然后我遇到了deeplearning4j,我可以告诉你它非常完整并且计算速度非常快。我想说如果你想看看15年前使用Encog的神经网框架,那么就没有理由使用它,即。使用deeplearning4j,或尝试一些python DL框架。
我只对Java世界中的Deeplearning4j和Encog有一些经验,我认为这在很大程度上取决于你的目标是什么。 Deeplearning4j当然是2中最复杂的框架;它有很棒的工具,它可以与GPU一起使用,它支持LSTM和卷积NN之类的东西,它已经为分布式培训等设置了。 但它既精致又酷,它也可能是一个PITA。当主页要求您使用特定的IDE并指向依赖项目的冗长安装指南时,您知道它不会非常简单。 但如果你需要它,它是值得的。
也就是说,在某些情况下,Encog还有很多话要说。它很容易与几乎任何java项目集成;它只是一个.jar包含和离开你去。 它非常快并且非常有效地使用您的CPU内核,它具有非常好且易于理解的API。如果您需要一个java库来有效地实现前馈NN,或者如果您想了解更多关于一般机器学习的知识,我不能推荐足够的Encog。 当您遇到Encog的限制时,请尝试Deeplearning4j或者看一下Java之外的内容并尝试类似Tensorflow(它也有一些java支持)。