web-dev-qa-db-fra.com

Bibliothèque Open Source Neural Network

Je recherche une bibliothèque de réseau neuronal open source. Jusqu'à présent, j'ai examiné FANN, WEKA et OpenNN. Les autres que je devrais regarder? Les critères, bien sûr, sont la documentation, les exemples et la facilité d'utilisation.

62
Loozie

Dernière mise à jour: 07/01/2019 (Je mettrai à jour cette réponse de temps en temps ...)

Implémentations simples de réseaux de neurones

  • FANN est une implémentation très populaire en C/C++ et possède des liaisons pour de nombreux autres langages.
  • Je pense que WEKA n'a pas une très bonne implémentation pour les réseaux de neurones. Il existe une meilleure bibliothèque pour Java (et C #): Encog .
  • Dans scikit-learn (Python) 0.18 (version de développement actuelle), il y aura une implémentation de réseaux de neurones à action directe ( documentation API ).
  • Et je dois mentionner mon propre projet, qui s'appelle OpenANN ( Documentation ). Il est écrit en C++ et possède des liaisons Python.

L'apprentissage en profondeur

Parce que les réseaux de neurones sont très populaires en ce moment ("apprentissage profond"), il existe de nombreuses bibliothèques de recherche disponibles. La plupart d'entre eux sont faciles à configurer, à intégrer et à utiliser. Bien que ce ne soit pas aussi simple que les bibliothèques mentionnées ci-dessus. Ils fournissent des fonctionnalités Edge de pointe et de hautes performances (avec des GPU, etc.). La plupart de ces bibliothèques ont également une différenciation automatique. Vous pouvez facilement spécifier de nouvelles architectures, fonctions de perte, etc. et ne pas avoir à spécifier manuellement la rétropropagation.

  • Keras est le meilleur de cette catégorie à mon avis: utilisable, puissant et activement développé. Il peut utiliser Tensorflow , Theano et CNTK comme backend.
  • TensorFlow de Google (C++/Python)
  • CNTK de Microsoft (formation en Python/évaluation en C++/C #/Java/Python)
  • Caffe de Berkeley Vision and Learning Center en C++ avec Python
  • PyTorch de Facebook, en Python, peut être étendu avec C/C++
  • mxnet (C++, Python, R, Scala, Julia, Matlab, Javascript)
  • Blocs basé sur Theano (Python)
  • Neon d'Intel Nervana fournit des implémentations très efficaces (Python)
  • Deeplearning4j (Java)
  • Chainer (Python)
  • MatConvNet (Matlab)
  • PaddlePaddle de Baidu dans CUDA/C++ avec Python
  • NNabla de Sony dans Cuda/C++ 11 avec Python

Une comparaison des performances pour les bibliothèques accélérées par GPU peut être trouvée ici (un peu dépassé malheureusement). Une comparaison des GPU et des versions de bibliothèque peut être trouvée ici .

Inactif:

59
alfa

Si vous voulez de la flexibilité dans la définition des configurations de réseau, comme le partage de paramètres ou la création de différents types d'architectures convolutionnelles, alors vous devriez regarder la famille des bibliothèques Torch: http://www.torch.ch/ .

Je n'ai pas encore parcouru la documentation de Torch 7, mais la documentation des autres versions était assez décente et le code est très lisible (en Lua et C++).

5
user1149913

Vous pouvez utiliser le framework accord.net. http://accord-framework.net/

Il contient des algorithmes d'apprentissage neuronal tels que Levenberg-Marquardt, Parallel Resilient Backpropagation, l'algorithme d'initialisation Nguyen-Widrow, Deep Belief Networks et Restrictured Boltzmann Machines, et de nombreux autres éléments liés au réseau neuronal.

3
turgay

Netlab est une bibliothèque Matlab couramment utilisée. (gratuit et open source)

La boîte à outils Netlab est conçue pour fournir les outils centraux nécessaires à la simulation d'algorithmes de réseaux neuronaux théoriquement bien fondés et de modèles connexes à utiliser dans l'enseignement, la recherche et le développement d'applications. Il est largement utilisé dans le MSc par Research in the Mathematics of Complex Systems.

La bibliothèque Netlab comprend des implémentations logicielles d'un large éventail de techniques d'analyse de données, dont beaucoup ne sont pas encore disponibles dans les packages de simulation de réseau neuronal standard. Netlab fonctionne avec Matlab version 5.0 et supérieure mais n'a besoin que du noyau Matlab (c'est-à-dire qu'aucune autre boîte à outils n'est requise). Il n'est pas compatible avec les versions antérieures de Matlab.

2
Franck Dernoncourt