Un outil open source pour l'apprentissage / l'expérimentation de l'IA à domicile?


9

Je voudrais faire quelques expériences avec l'évolution du réseau neuronal (NEAT). J'ai écrit du code GA et du réseau neuronal en C ++ dans les années 90 juste pour jouer, mais l'approche de bricolage s'est avérée assez exigeante en main-d'œuvre que j'ai finalement abandonnée.

Les choses ont beaucoup changé depuis lors, et il y a beaucoup de très bonnes bibliothèques et outils open source pour à peu près tout intérêt que l'on pourrait avoir. J'ai googlé différentes bibliothèques open source (par exemple DEAP), mais je pourrais utiliser de l'aide pour en choisir une qui conviendrait bien ...

  • J'ai passé une grande partie de mon temps à écrire du code pour visualiser ce qui se passait (état net neuronal, forme physique de la population) ou les résultats finaux (graphiques, etc.).

    Peut-être que cela devrait être rempli par une bibliothèque open-source distincte, mais le support de visualisation serait quelque chose qui me permettrait de consacrer plus de temps au problème / solution et moins aux détails d'implémentation.
  • Je connais C / C ++, Java, C #, Python, Javascript et quelques autres. Quelque chose qui soit un bon compromis entre une langue de niveau supérieur et de bonnes performances sur le matériel domestique serait un bon choix.

Une personne expérimentée peut-elle suggérer une bonne bibliothèque open source ou un ensemble d'outils?


Cette question appartient à softwarerecs.stackexchange.com . Btw, pour moi, votre question semble être très large et devrait donc être fermée, de toute façon.
nbro

@nbro - Merci, je soupçonnais qu'il y avait un meilleur endroit pour cela, mais je ne connaissais pas les softwarerecs.
Scott Smith

Ceux qui ont voté pour cette question peuvent-ils nous dire pourquoi?
quintumnia

Réponses:


3

comme cela est écrit en Javascript et n'offre pas (encore) de support GPU, c'est assez lent. Cependant, il est très agréable de jouer avec des architectures réseau flexibles. La seule visualisation qu'il propose actuellement est une carte de l'architecture du réseau, mais des graphiques pourraient facilement être implémentés.

https://github.com/wagenaartje/neataptic


2

Eh bien, si vous choisissez TensorfFlow pour travailler avec, vous obtenez TensorBoard dans le cadre du package. Cela pourrait être quelque chose de proche de ce que vous recherchez.

Et avec TensorFlow, vous pouvez coder en C ++, Python et quelques autres langages (je pense qu'il y a aussi des liaisons Ruby et Java, probablement d'autres maintenant).



2

Il y a aussi DXNN, qui est comme vous l'avez décrit, un système neuroévolutionnaire, il est écrit en Erlang. https://github.com/CorticalComputer/DXNN2

J'ai travaillé dessus pour le rendre modulaire, vous l'utilisez donc comme une bibliothèque et gardez votre code / application isolé.

Voici un exemple de code , qui télécharge DXNN en tant que bibliothèque. il génère également des fichiers de données prêts pour gnuplot pour la visualisation.


2

Fann ( http://leenissen.dk/fann/wp/ ) est une bibliothèque de réseau de neurones open source gratuite.

Caractéristiques du FANN:

  • Bibliothèque de réseaux de neurones artificiels multicouches en C
  • Formation à la rétropropagation (RPROP, Quickprop, Batch, Incremental)
  • Formation en topologie évolutive qui construit et forme dynamiquement l'ANN (Cascade2)
  • Facile à utiliser (créer, former et exécuter un ANN avec seulement trois appels de fonction)
  • Rapide (exécution jusqu'à 150 fois plus rapide que les autres bibliothèques)
  • Polyvalent (possible d'ajuster de nombreux paramètres et fonctionnalités à la volée)
  • Bien documenté (un article d'introduction facile à lire, un manuel de référence complet et un rapport universitaire de plus de 50 pages décrivant les considérations de mise en œuvre, etc.)
  • Multiplateforme (le script de configuration pour Linux et Unix, les fichiers DLL pour Windows, les fichiers de projet pour MSVC ++ et les compilateurs Borland sont également signalés pour fonctionner)
  • Plusieurs fonctions d'activation différentes implémentées (y compris des fonctions linéaires pas à pas pour ce bit supplémentaire de vitesse)
  • Enregistrement et chargement de RNA entiers faciles
  • Plusieurs exemples faciles à utiliser
  • Peut utiliser à la fois des nombres à virgule flottante et à virgule fixe (en fait, les deux flottants, doubles et int sont disponibles)
  • Cache optimisé (pour ce bit de vitesse supplémentaire)
  • Open source, mais peut toujours être utilisé dans des applications commerciales (sous licence LGPL)
  • Cadre pour une manipulation facile des ensembles de données de formation
  • Interfaces graphiques
  • Liaisons de langage à un grand nombre de langages de programmation différents
  • Largement utilisé (environ 100 téléchargements par jour)

2

Pour les algorithmes génétiques, j'ai écrit GeneticSharp .

Une bibliothèque d'algorithmes génétiques multiplateforme pour .NET Core et .NET Framework. La bibliothèque a plusieurs implémentations d'opérateurs GA, comme: sélection, croisement, mutation, réinsertion et terminaison.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.