开源神经网络库

64

我正在寻找一款开源神经网络库。目前,我已经看过了FANN、WEKA和OpenNN。还有其他值得我关注的吗?当然,标准是文档、示例和易用性。


C/C++感知器:http://sourceforge.net/projects/ccperceptron/ - SomethingSomething
这是一个用C/C++编写的前馈神经网络库:https://sourceforge.net/projects/c-c-neural-networks/ - SomethingSomething
针对Java和Scala的分布式神经网络,请访问http://deeplearning4j.org。 - racknuf
4个回答

62

最后更新时间:2023年07月17日(我会不时更新这个答案...)

神经网络的简单实现

  • FANN 是一个在C/C++中非常流行的实现,并且有许多其他语言的绑定。
  • 在scikit-learn(Python)0.18版本(当前开发版本)中,将会有一个前馈神经网络的实现(API文档)。
  • 还要提到我的项目,它叫做OpenANN文档)。它是用C++编写的,并有Python绑定。

深度学习

由于神经网络在当前的研究和工业领域非常流行(即“深度学习”),因此有许多研究库可供使用。其中大部分都相对容易设置、集成和使用,尽管不如上述提到的库那样简单。它们提供先进的功能和高性能(包括使用GPU等)。这些库中的大多数还具备自动微分功能。您可以轻松地指定新的架构、损失函数等,而无需手动指定反向传播过程。
  • Keras:作为其他神经网络库的高级接口,具有悠久的历史。它目前的目的是作为TensorFlowPyTorchJax的高级接口;(之前它是TensorFlow的一部分,之前它可以使用TensorflowTheanoCNTK作为后端。)
  • TensorFlow来自Google(C++/Python)
  • PyTorch来自Facebook,用Python编写,可以通过C/C++进行扩展,有以下高级接口:LightningfastaiIgniteskorchcatalyst
  • jax(Python)具有类似于numpy的接口,非常低级,但也有以下高级接口:traxflaxHaiku
  • mxnet(C++、Python、R、Scala、Julia、Matlab、Javascript)
  • Deeplearning4j(Java)
  • PaddlePaddle来自百度,采用CUDA/C++,带有Python绑定
  • NNabla来自索尼,采用Cuda/C++11,带有Python绑定

不活跃:


有趣的选项;你不是OpenAnn的作者吗?那肯定是我的答案——严肃快速、稳定,与Orange和Weka相比具有出色的解决方案。事实上,如果有NumPy绑定,我们可能会经常使用它。 - doug
哦,那很有趣。:) 你有任何基准结果(与Weka和Orange的比较)可以给我展示吗?我认为Python绑定应该不难实现。我会去看一下的。 - alfa
我更新了我的回答。自去年以来,神经网络社区发生了很多事情。@doug OpenANN现在具有Python/NumPy绑定。虽然它们可能不是非常快的,但这可以得到改善。 :) - alfa
请参考这个库:http://sourceforge.net/projects/c-c-neural-networks/ - SomethingSomething
1
Encog C#非常好,有很多相关书籍可供参考,但遗憾的是它不支持GPU,并且源代码最后更新于2年前。 - Mario

5
如果你想在定义网络配置方面拥有灵活性,例如共享参数或创建不同类型的卷积架构,那么你应该看看Torch库系列:http://www.torch.ch/

我还没有仔细阅读过Torch 7的文档,但其他版本的文档相当不错,而且代码非常易读(使用Lua和C ++)。


4
您可以使用accord.net框架。http://accord-framework.net/ 其中包含神经学习算法,如Levenberg-Marquardt、Parallel Resilient Backpropagation、Nguyen-Widrow初始化算法、Deep Belief Networks和Restructured Boltzmann Machines等,以及许多其他与神经网络相关的项目。

2
Netlab是一个常用的Matlab库(免费且开源)。Netlab工具箱旨在提供模拟理论基础神经网络算法及相关模型所需的核心工具,以供教学、研究和应用开发使用。它在复杂系统数学硕士研究中广泛使用。Netlab库包括各种数据分析技术的软件实现,其中许多技术在标准神经网络仿真软件包中尚不可用。Netlab可与Matlab 5.0版本及更高版本配合使用,但仅需要核心Matlab(即不需要其他工具箱)。它不与以前的Matlab版本兼容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接