J'utilise des réseaux de neurones pour résoudre différents problèmes d'apprentissage machine. J'utilise Python et Pybrain mais cette bibliothèque est presque abandonnée. Existe-t-il d'autres bonnes alternatives en Python?
machine-learning
python
neural-network
marcodena
la source
la source
Réponses:
MISE À JOUR: le paysage a beaucoup changé depuis que j'ai répondu à cette question en juillet 2014 et de nouveaux joueurs sont entrés dans l'espace. En particulier, je recommanderais de vérifier:
Ils ont chacun leurs forces et leurs faiblesses, alors essayez-les et voyez ce qui convient le mieux à votre cas d'utilisation. Bien que j'aurais recommandé d'utiliser PyLearn2 il y a un an, la communauté n'étant plus active, je vous recommande de regarder ailleurs. Ma réponse initiale à la réponse est incluse ci-dessous mais est en grande partie hors de propos à ce stade.
PyLearn2 est généralement considéré comme la bibliothèque de choix pour les réseaux de neurones et l’apprentissage en profondeur en python. Il est conçu pour une expérimentation scientifique facile plutôt que pour une utilisation facile. La courbe d'apprentissage est donc assez raide, mais si vous prenez votre temps et suivez les tutoriels, je pense que vous serez satisfait de la fonctionnalité fournie. Tout, des perceptrons multicouches standard aux machines Boltzmann restreintes aux réseaux de convolution en passant par les autoencodeurs est fourni. Le support GPU est excellent et tout est construit sur Theano. Les performances sont donc plutôt bonnes. La source de PyLearn2 est disponible sur github .
Sachez que PyLearn2 a le problème opposé de PyBrain pour le moment. Plutôt que d’être abandonné, PyLearn2 fait actuellement l’objet d’un développement actif et est sujet à de fréquents changements.
la source
Tensor Flow ( Google Documents ) de Google est un autre cadre agréable à différenciation automatique. J'ai rédigé quelques réflexions rapides sur Google Tensor Flow sur mon blog, ainsi que l'exemple MNIST présenté dans leur didacticiel.
Voir aussi: Mon tutoriel Tensorflow XOR
Lasagne ( docs ) est très agréable, car il utilise le théo (→ vous pouvez utiliser le GPU) et le rend plus simple à utiliser. L'auteur de lasagnes a remporté le défi Kaggle Galaxy, à ma connaissance. C'est gentil avec nolearn . Voici un exemple de réseau MNIST:
Caffe est une bibliothèque C ++, mais possède des liaisons Python. Vous pouvez faire la plupart des choses avec des fichiers de configuration (prototxt). Il a beaucoup d'options et peut également utiliser le GPU.
la source
Pylearn s’appuie sur Theano et, comme mentionné dans l’autre réponse, utiliser la bibliothèque est assez compliqué, jusqu’à ce que vous en ayez le contrôle.
En attendant, je suggère d'utiliser Theanets . Il a également été construit sur Theano, mais il est beaucoup plus facile de travailler avec. C'est peut-être vrai qu'il ne possède pas toutes les fonctionnalités de Pylearn, mais pour le travail de base, cela suffit.
En outre, il est open source, vous pouvez donc ajouter des réseaux personnalisés à la volée, si vous osez. :)
EDIT: Dec 2015. Récemment, j'ai commencé à utiliser Keras . C'est un peu plus bas que Theanets, mais beaucoup plus puissant. Theanets est approprié pour les tests de base. Mais si vous voulez faire des recherches dans le domaine de ANN, Keras est beaucoup plus flexible. De plus, les Keras peuvent utiliser Tensorflow comme back -end.
la source
TensorFlow (par Google, publié le 09/11/2015) semble prometteur.
FYI:
la source
Pylearn2 semble être la bibliothèque de choix, mais je trouve leurs fichiers de configuration YAML déconcertants.
Python lui-même a été conçu pour être un langage simple pour le prototypage. Pourquoi ne l' utilisez- vous pas pour définir les propriétés du réseau elles-mêmes? Nous avons d'excellents éditeurs dotés de fonctions d'auto-complétion qui vous faciliteraient grandement la vie. Python n'est pas comme le C ++ où vous devez attendre de longues générations pour pouvoir exécuter votre code.
Les fichiers YAML, d’autre part, vous devez les éditer à l’aide d’un éditeur de texte standard sans aucune aide, ce qui rend la courbe d’apprentissage encore plus raide.
Il se peut que je manque la vue d'ensemble mais je ne comprends toujours pas à quoi ils pensaient. Je ne pense pas que le prototypage en code serait beaucoup plus lent. Pour cette raison, je considère Theanets ou j'utilise Theano directement.
la source
J'aime Blocks , qui est également construit sur Theano. Bien plus accessible que PyLearn2 et plus riche en fonctionnalités que Lasagne. Soigneusement écrit, aussi.
Mis à jour en janvier 2016:
Au moment de la rédaction, Keras a de loin le plus d’élan. Il est hautement modulaire et peut fonctionner à la fois sur Theano et Tensorflow, ce qui lui donne de grandes opportunités.
la source
MXNet :
la source
D'après ce que j'ai entendu, Pylearn2 pourrait être actuellement la bibliothèque de choix pour la plupart des gens. Cela me rappelle un récent article de blog publié il y a quelques mois, qui répertorie toutes les différentes bibliothèques d'apprentissage machine avec une courte explication.
https://www.cbinsights.com/blog/python-tools-machine-learning
La section qui pourrait vous intéresser serait "Apprentissage en profondeur". À propos de Pylearn2, écrit-il
la source
J'ai écrit ce post en détaillant certains de mes favoris personnels:
Les meilleures bibliothèques d'apprentissage machine en Python
Comme plus de 30 bibliothèques différentes sont mentionnées, je ne les posterai pas toutes ici, mais celles-ci sont parmi les plus populaires:
(Désolé, impossible de créer un lien vers le dépôt Github puisque mon représentant est toujours <10 ...)Edit: Ajout de liens vers les dépôts Github.
la source
néon :
la source
Juste pour ajouter quelques ressources supplémentaires. Récemment, un article a étudié les différences entre plusieurs ensembles de réseaux de neurones et de réseaux de neurones profonds.
Ici vous pouvez trouver l' information . Il semble que Torch et TensorFlow soient les gagnants.
Note: tous ne sont pas en python. Cependant, je l'ai posté pour ouvrir la discussion.
la source
Microsoft Cognition Toolkit (anciennement CNTK) dispose d'une API Python . Entre autres choses, cela est supposé être bon pour le multi-GPU :
Des exemples et des tutoriels sont disponibles sur https://github.com/Microsoft/CNTK/tree/master/bindings/python.
la source
DyNet: la boîte à outils du réseau neuronal dynamique. À partir de 1}:
Il était auparavant connu sous le nom de cnn (dont la liaison python était appelée pycnn).
Références:
la source
Je vous recommande d'utiliser tensorflow, qui est en plein développement et soutient l'apprentissage en profondeur. Vous pouvez utiliser l'API Keras de réseaux de neurones de haut niveau qui fonctionne au-dessus de tensorflow et est très simple à utiliser. Essayez simplement un didacticiel et vous allez l'adorer.
la source
PyTorch
Il gagne beaucoup de soutien en raison de sa facilité d'utilisation et de sa similitude avec Python de base.
Il fonctionne "ligne par ligne" (via des graphiques dynamiques), tout comme Python normal et peut être facilement débogué - même à l'aide d'instructions d'impression standard. Il s'intègre également très bien avec NumPy et d'autres linbraries Python bien connues, comme Scikit Learn.
Parce que cela facilite la modélisation, il est idéal pour le prototypage et l'exploration de nouvelles idées en général.
Il prend en charge plusieurs processeurs graphiques de manière très simple.
Découvrez plus de fonctionnalités ici .
Bien que de nombreux avantages décrits ci-dessus rendent PyTorch beaucoup plus agréable à utiliser que d’autres bibliothèques couramment utilisées, il convient de noter que la version majeure à venir de Tensorflow utilisera également, par défaut, la création de graphes dynamiques ( mode rapide ). Cela le rendra comparable à PyTorch en utilisation.
la source
Si vous êtes intéressé par les comparaisons de performances, Soumith Chintala maintient un ensemble de repères convnet qui couvrent plusieurs des frameworks python déjà mentionnés ( TensorFlow , chainer , neon , Theano ):
la source
NeuPy est une bibliothèque Python pour les réseaux de neurones artificiels. NeuPy prend en charge de nombreux types de réseaux de neurones allant du simple perceptron aux modèles d'apprentissage en profondeur.
la source