我正在寻找一个开源神经网络库。到目前为止,我已经看过 FANN、WEKA 和 OpenNN。其他是我应该看的吗?当然,标准是文档、示例和易用性。
4 回答
最后更新:2020/03/24(我会不时更新这个答案...)
神经网络的简单实现
- FANN是 C/C++ 中非常流行的实现,并且具有许多其他语言的绑定。
- 在 scikit-learn (Python) 0.18(当前开发版本)中将实现前馈神经网络(API 文档)。
- 我必须提到我自己的项目,称为OpenANN(文档)。它是用 C++ 编写的,并具有 Python 绑定。
深度学习
因为神经网络目前在研究和工业中非常流行(“深度学习”),所以有许多研究库可用。它们中的大多数都易于设置、集成和使用。虽然不像上面提到的库那么容易。它们提供领先的功能和高性能(使用 GPU 等)。这些库中的大多数还具有自动微分功能。您可以轻松指定新架构、损失函数等,而不必手动指定反向传播。
- 来自 Google 的TensorFlow(C++/Python)
- 来自 Facebook 的PyTorch,在 Python 中,可以用 C/C++ 扩展
- mxnet(C++、Python、R、Scala、Julia、Matlab、Javascript)
- 深度学习 4j (Java)
- 来自 Microsoft 的CNTK(Python 培训/C++/C#/Java/Python 评估)
- 链纳(Python)
- 来自百度的PaddlePaddle在 CUDA/C++ 中与 Python 绑定
- 来自 Sony 的Cuda /C++11 中的 NNabla,带有 Python 绑定
可以在此处找到 GPU 加速库的性能比较(不幸的是有点过时了)。可以在此处找到 GPU 和库版本的比较。
非活动:
- Keras:它可以使用Tensorflow、Theano和CNTK作为后端。(现在是 tensorflow 的一部分,作为其高级接口。)
- 来自伯克利视觉和学习中心的 C++ 与 Python 绑定的Caffe
- Darknet:C 中的 CNN,以 YOLO 对象检测器的实现而闻名。
- 来自 Intel Nervana 的Neon提供了非常高效的实现 (Python)
- MatConvNet (Matlab)
- Theano (Python) 及其高级 API:
- pylearn 2
- 网络
- scikit-神经网络
- 千层面
- 基于 Theano (Python) 的块
- 带有 Python 绑定的 CUDA/C++ 中的cuda-convnet2
- 赫贝尔(Python)
- 来自 Facebook 的 C++ 中带有 Python 绑定的Caffe2 ;已加入 PyTorch
- Torch 7 的神经网络(Lua,Torch 7 是一个“类 Matlab 环境”,Torch 中机器学习算法的概述)
- PyBrain (Python) 包含不同类型的神经网络和训练方法。
- 编码(Java 和 C#)
如果您希望灵活地定义网络配置,例如共享参数或创建不同类型的卷积架构,那么您应该查看 Torch 库系列:http ://www.torch.ch/ 。
我还没有浏览 Torch 7 的文档,但是其他版本的文档相当不错,而且代码非常易读(在 Lua 和 C++ 中)。
您可以使用accord.net 框架。http://accord-framework.net/
它包含神经学习算法,例如 Levenberg-Marquardt、Parallel Resilient Backpropagation、Nguyen-Widrow 初始化算法、Deep Belief Networks 和 Restrictured Boltzmann Machines,以及许多其他与神经网络相关的项目。
Netlab是一个常用的 Matlab 库。(免费和开源)
Netlab 工具箱旨在为在教学、研究和应用程序开发中使用的理论完善的神经网络算法和相关模型的仿真提供必要的中心工具。它在复杂系统数学研究中被广泛用于理学硕士。
Netlab 库包括各种数据分析技术的软件实现,其中许多技术尚未在标准神经网络仿真包中提供。Netlab 与Matlab 5.0 及更高版本一起工作,但只需要核心Matlab(即不需要其他工具箱)。它与早期版本的 Matlab 不兼容。