【发布时间】:2016-09-09 18:38:11
【问题描述】:
我们正在开发一个使用神经网络的 Java 项目。我们想在我们的数据集上测试不同的网络结构。现在我们评估哪个 Java 神经网络在性能方面是最好的。我们正在评估 Encog、Neuroph 和 DL4J。你能告诉我们一些好的资源或你自己的经验吗? 谢谢
【问题讨论】:
标签: java machine-learning neural-network encog deeplearning4j
我们正在开发一个使用神经网络的 Java 项目。我们想在我们的数据集上测试不同的网络结构。现在我们评估哪个 Java 神经网络在性能方面是最好的。我们正在评估 Encog、Neuroph 和 DL4J。你能告诉我们一些好的资源或你自己的经验吗? 谢谢
【问题讨论】:
标签: java machine-learning neural-network encog deeplearning4j
我可以告诉你我的经验。
早在 2015 年,我就一直在寻找一个好的深度学习 Java 框架。经过初步研究,我遇到了 Encog。我很快意识到它缺少现代神经网络的许多组件,也就是说,它已经过时了,而且我什至在设置它时也遇到了很多麻烦(它不是很灵活)。顺便说一句,它确实允许在 CPU 上进行并行计算。
所以我决定编写我自己的框架,我仍然使用它并且运行良好。然后我遇到了 deeplearning4j,我可以告诉你它非常完整并且计算速度非常快。我想说如果你想看看 15 年前回顾的神经网络框架使用 Encog,否则没有理由使用它,即使用 deeplearning4j,或尝试一些 python DL 框架。
【讨论】:
我只对Java世界的Deeplearning4j和Encog有一些经验,我认为这很大程度上取决于你的目标是什么。 Deeplearning4j 无疑是 2 中最复杂的框架;它有很棒的工具,它可以与 GPU 一起使用,它支持 LSTM 和卷积神经网络之类的东西,它已经为分布式训练设置了等等。 但是,尽管它既精致又酷,它也可以有点像 PITA。当主页希望您使用特定的 IDE 并指向依赖项目的冗长安装指南时,您知道这不会很简单。 但是如果你需要它是值得的。
也就是说,在某些情况下,Encog 仍有很多话要说。它很容易与几乎任何 java 项目集成;它只是一个包含和关闭的 .jar 文件。 它非常快并且非常有效地使用您的 CPU 内核,它有一个非常好且易于理解的 API。如果您需要一个 java 库来有效地实现前馈 NN,或者如果您想了解更多有关使用机器学习的一般知识,我不能推荐 Encog。 当您遇到 Encog 的限制时,请尝试 Deeplearning4j 或超越 java 并尝试类似 Tensorflow(它也有一些 java 支持)。
【讨论】:
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 深度学习工具,也是全球排名前 5 的深度学习库之一。
Deeplearning4j 由数值计算库 ND4J 或 Java 的 n 维数组提供支持。基本上,我们将 Numpy 移植到了 JVM。这使得 DL4J 具有可扩展性,您将在不久的将来看到我们添加其他算法,例如强化学习。反过来,ND4J 在 libND4J 上运行,这是一个使计算速度更快的 C++ 库。我们还构建了向量化库 Canova,它接收任何类型的数据并将其转换为神经网络可以理解的向量。我们正在尝试解决 NN 上游的一些 ETL 问题。
Neuroph 具有很强的可视化能力,但我无法判断他们框架的其余部分,所以我会让他们自己说话!
https://github.com/deeplearning4j
Deeplearning4j 在 Gitter 的用户支持频道中有近 2000 名开发人员。如果您有任何问题,请加入我们:
【讨论】: