性能 Encog 与 Deeplearning4J

Performance Encog vs Deeplearning4J

我们正在 Java 中使用神经网络开展一个项目。我们想在我们的数据集上测试不同的网络结构。现在我们评估 Java 个神经网络中哪个神经网络的性能最好。我们正在评估 Encog、Neuroph 和 DL4J。你能告诉我们一些好的资源或你自己的经验吗? 谢谢

Deeplearning4j 创建者在这里:

  • Encog 由 Jeff Heaton 在 90 年代初编写,并且在很长一段时间内都是标准的 Java 深度学习框架。我不认为 Encog 处理分布式计算,与 GPU、Hadoop、Spark 或 Kafka 一起工作,或者考虑自 2006 年以来 DL 中的许多算法进步。(Jeff,如果我错了请纠正我!)

  • Deeplearning4j 可以做所有这些事情。它使用 Spark 作为访问层在分布式 CPU 或 GPU 上工作。它在 CDH5 上获得认证,很快在 HDP 上获得认证……它包括 LSTM (RNN)、深度卷积网络、RBM、DBN 和 word2vec 以及其他神经网络的实现。它是目前最流行的 JVM DL 工具,也是世界上排名前 5 的 DL 库之一。

  • Deeplearning4j 由数值计算库 ND4J 或 Java 的 n 维数组提供支持。基本上,我们将 Numpy 移植到了 JVM。这使得 DL4J 具有可扩展性,您会看到我们在不久的将来添加其他算法,如强化学习。反过来,ND4J 在 libND4J 上运行,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

我在 java 世界中只有一些使用 Deeplearning4j 和 Encog 的经验,我认为这在很大程度上取决于您的目标是什么。 Deeplearning4j 无疑是 2 中最复杂的框架;它有很棒的工具,它与 GPU 一起工作,它支持 LSTM 和卷积神经网络之类的东西,它已经为分布式训练而设置,等等。 但尽管它既精致又酷,它也可以有点像 PITA。当主页希望您使用特定的 IDE 并指向依赖项目的冗长安装指南时,您知道它不会很简单。 但如果你需要它,那是值得的。

话虽如此,在某些情况下,Encog 仍有很多值得一提的地方。它非常容易与几乎任何 java 项目集成;只需包含一个 .jar 文件即可。 它速度非常快,可以非常有效地使用您的 CPU 个核心,它有一个非常漂亮且易于理解的 API。如果您需要一个 java 库来有效地实现前馈神经网络,或者如果您想了解更多关于一般机器学习的知识,我强烈推荐 Encog。 当您 运行 了解 Encog 的局限性时,请尝试 Deeplearning4j 或查看 java 之外的内容并尝试 Tensorflow 之类的东西(它也有一些 java 支持)。

我可以告诉你我的经历。

早在 2015 年,我就在寻找一个好的 Java 深度学习框架。经过初步研究,我遇到了 Encog。我很快意识到它缺少现代神经网络的许多组件,也就是说,它已经过时了,而且我什至在设置它时也遇到了很多麻烦(它不是很灵活)。顺便说一句,它确实允许在 CPU 上进行并行计算。

所以我决定编写自己的框架,我仍在使用它并且运行良好。然后我遇到了 deeplearning4j,我可以告诉你它非常完整并且计算速度非常快。我会说如果你想看看 15 年前的神经网络框架使用 Encog,否则没有理由使用它,即使用 deeplearning4j,或尝试一些 python 深度学习框架。