Ich verwende neuronale Netze, um verschiedene Probleme des maschinellen Lernens zu lösen. Ich benutze Python und Pybrain, aber diese Bibliothek ist fast eingestellt. Gibt es andere gute Alternativen in Python?
machine-learning
python
neural-network
Marcodena
quelle
quelle
Antworten:
UPDATE: Die Landschaft hat sich ziemlich verändert, seit ich diese Frage im Juli '14 beantwortet habe und einige neue Spieler den Raum betreten haben. Insbesondere würde ich empfehlen, Folgendes zu überprüfen:
Sie haben jeweils ihre Stärken und Schwächen. Probieren Sie also alle aus, welche am besten zu Ihrem Anwendungsfall passt. Obwohl ich vor einem Jahr die Verwendung von PyLearn2 empfohlen hätte, ist die Community nicht mehr aktiv, daher würde ich empfehlen, sich anderswo umzusehen. Meine ursprüngliche Antwort auf die Antwort ist unten aufgeführt, aber an dieser Stelle weitgehend irrelevant.
PyLearn2 wird allgemein als die Bibliothek der Wahl für neuronale Netze und Deep Learning in Python angesehen. Es ist eher für einfaches wissenschaftliches Experimentieren als für einfache Bedienung konzipiert, sodass die Lernkurve recht steil ist. Wenn Sie sich jedoch Zeit nehmen und die Tutorials befolgen, werden Sie mit den darin enthaltenen Funktionen zufrieden sein. Von Standard-Multilayer-Perzeptronen über eingeschränkte Boltzmann-Maschinen bis hin zu Faltungsnetzen und Autoencodern wird alles geboten. Es gibt eine großartige GPU-Unterstützung und alles basiert auf Theano, sodass die Leistung in der Regel recht gut ist. Die Quelle für PyLearn2 ist auf github verfügbar .
Beachten Sie, dass PyLearn2 derzeit das gegenteilige Problem von PyBrain hat - anstatt aufgegeben zu werden, befindet sich PyLearn2 in der aktiven Entwicklung und unterliegt häufigen Änderungen.
quelle
Tensor Flow ( docs ) von Google ist ein weiteres nützliches Framework mit automatischer Unterscheidung. Ich habe in meinem Blog einige kurze Gedanken zu Google Tensor Flow zusammen mit dem MNIST-Beispiel niedergeschrieben, das sie in ihrem Tutorial haben.
Siehe auch: Mein Tensorflow XOR-Tutorial
Lasagne ( docs ) ist sehr schön, da es theano verwendet (→ Sie können die GPU verwenden) und es einfacher zu bedienen macht. Der Autor der Lasagne hat meines Wissens die Kaggle Galaxy Challenge gewonnen. Es ist schön mit Nolearn . Hier ist ein MNIST-Beispielnetzwerk:
Caffe ist eine C ++ - Bibliothek, verfügt jedoch über Python-Bindungen. Sie können die meisten Dinge mit Konfigurationsdateien (prototxt) erledigen. Es hat viele Möglichkeiten und kann auch die GPU nutzen.
quelle
Pylearn verlässt sich auf Theano und wie in der anderen Antwort erwähnt, ist die Nutzung der Bibliothek ziemlich kompliziert, bis Sie sie in den Griff bekommen.
In der Zwischenzeit würde ich vorschlagen, Theanets zu verwenden . Es baut ebenfalls auf Theano auf, ist aber viel einfacher zu handhaben. Es mag sein, dass es nicht alle Funktionen von Pylearn bietet, aber für die Grundarbeit ist es ausreichend.
Außerdem ist es Open Source, sodass Sie jederzeit benutzerdefinierte Netzwerke hinzufügen können, wenn Sie sich trauen. :)
EDIT: Dezember 2015. Seit kurzem benutze ich Keras . Es ist ein bisschen niedriger als Theanets, aber viel mächtiger. Für Basistests eignen sich die Theanets. Wenn Sie jedoch im Bereich ANN forschen möchten, ist Keras wesentlich flexibler. Außerdem können die Keras Tensorflow als Backend verwenden.
quelle
TensorFlow (von Google, veröffentlicht am 09.11.2015) sieht vielversprechend aus.
Zu Ihrer Information:
quelle
Pylearn2 scheint die Bibliothek der Wahl zu sein, aber ich finde ihre YAML-Konfigurationsdateien abstoßend.
Python selbst wurde als einfache Sprache für das Prototyping entwickelt. Warum sollten Sie sie nicht verwenden, um die Netzwerkeigenschaften selbst zu definieren? Wir haben großartige Editoren mit automatischer Vervollständigung, die Ihnen das Leben erheblich erleichtern würden, und Python ist nicht wie C ++, bei dem Sie auf lange Builds warten müssen, bevor Sie Ihren Code ausführen können.
YAML-Dateien müssen hingegen mit einem Standard-Texteditor ohne jegliche Unterstützung bearbeitet werden, was die Lernkurve noch steiler macht.
Mir fehlt vielleicht das Gesamtbild, aber ich verstehe immer noch nicht, was sie dachten. Ich denke nicht, dass das Prototyping im Code viel langsamer sein würde. Aus diesem Grund denke ich über Theanets nach oder verwende Theano direkt.
quelle
Ich mag Blocks , die ebenfalls auf Theano aufbauen. Weit zugänglicher als PyLearn2 und funktionsreicher als Lasagne. Auch ordentlich geschrieben.
Aktualisiert im Januar 2016:
Zum Zeitpunkt des Schreibens hat Keras die mit Abstand größte Dynamik. Es ist sehr modular aufgebaut und kann sowohl mit Theano als auch mit Tensorflow betrieben werden.
quelle
MXNet :
quelle
Nach allem, was ich gehört habe, ist Pylearn2 derzeit die Bibliothek der Wahl für die meisten Menschen. Dies erinnert mich an einen Blogeintrag vor einigen Monaten, in dem alle verschiedenen maschinellen Lernbibliotheken mit einer kurzen Erklärung aufgelistet sind
https://www.cbinsights.com/blog/python-tools-machine-learning
Der Abschnitt, der Sie hier interessieren könnte, wäre "Deep Learning". Über Pylearn2 schreibt er
quelle
Ich habe diesen Beitrag mit einigen meiner persönlichen Favoriten verfasst:
Die besten maschinellen Lernbibliotheken in Python
Da über 30 verschiedene Bibliotheken erwähnt werden, werde ich nicht alle hier veröffentlichen, aber diese gehören zu den beliebtesten:
(Entschuldigung, ich kann keine Verbindung zu den Github-Repos herstellen, da mein Rep immer noch <10 ist ...)Bearbeiten: Links zu Github-Repos hinzugefügt.
quelle
neon :
quelle
Nur um mehr Ressourcen hinzuzufügen. Kürzlich gab es einen Artikel, der die Unterschiede zwischen mehreren Paketen neuronaler Netze und tiefer neuronaler Netze untersuchte.
Hier finden Sie die Informationen . Es sieht so aus, als ob Torch und TensorFlow die Gewinner sind.
Hinweis: Nicht alle von ihnen sind in Python. Ich habe es jedoch gepostet, um die Diskussion zu eröffnen.
quelle
Microsoft Cognition Toolkit (früher als CNTK bekannt) verfügt über eine Python-API . Unter anderem soll es für Multi-GPU gut sein :
Beispiele und Tutorials finden Sie unter https://github.com/Microsoft/CNTK/tree/master/bindings/python
quelle
DyNet: Das Dynamic Neural Network Toolkit. Von {1}:
Es war früher als cnn bekannt (dessen Pythonbindung pycnn hieß).
Verweise:
quelle
Ich empfehle Ihnen, Tensorflow zu verwenden, der sich in einer starken Entwicklung befindet und tiefes Lernen unterstützt. Sie können die API- Keras für neuronale Netze auf hoher Ebene verwenden , die auf Tensorflow ausgeführt werden und sehr einfach zu verwenden sind. Probieren Sie einfach ein Tutorial aus und Sie werden es lieben.
quelle
PyTorch
Es gewinnt viel Unterstützung aufgrund seiner einfachen Bedienung und Ähnlichkeit mit Python.
Es wird wie normales Python "zeilenweise" (über dynamische Diagramme) ausgeführt und kann problemlos getestet werden - auch mit Standarddruckanweisungen. Es lässt sich auch sehr gut in NumPy und andere bekannte Python-Linbraries wie Scikit Learn integrieren.
Da es das Modellieren vereinfacht, eignet es sich hervorragend zum Erstellen von Prototypen und zum Erkunden neuer Ideen im Allgemeinen.
Es unterstützt mehrere GPUs und das auf sehr einfache Weise.
Schauen Sie sich hier mehr Funktionen .
Obwohl viele der oben genannten Vorteile PyTorch viel benutzerfreundlicher machen als andere häufig verwendete Bibliotheken, ist es erwähnenswert, dass die kommende Hauptversion von Tensorflow standardmäßig auch die dynamische Diagrammerstellung (auch bekannt als Eifermodus ) verwendet. Dadurch wird es im Gebrauch mit PyTorch vergleichbar.
quelle
Wenn Sie an Leistungsvergleichen interessiert sind, verwaltet Soumith Chintala eine Reihe von Convnet-Benchmarks, die mehrere der bereits erwähnten Python-Frameworks ( TensorFlow , Chainer , Neon , Theano ) abdecken :
quelle
NeuPy ist eine Python-Bibliothek für künstliche neuronale Netze. NeuPy unterstützt viele verschiedene Arten von neuronalen Netzen, vom einfachen Perzeptron bis zum Deep-Learning-Modell.
quelle