Python OSS-Alternativen für Matlab Neural Network Toolbox. Irgendwelche Vergleiche?

16

Ich möchte für meine wissenschaftliche Arbeit unabhängig von kommerzieller Software sein. Ich finde eine Abhängigkeit von kommerziellen Paketen wie Matlab und seinen Toolboxen unbefriedigend, weil ich nicht weiß, ob ich in Zukunft Zugang zu Matlab haben werde und weil mir die Sprache nicht gefällt. Deshalb suche ich nach Alternativen.

Glücklicherweise spreche ich fließend Python (und ich liebe die Sprache) und mit den Lese- und Schreibroutinen NumPy, SciPy, Matplotlib, Basemap und NetCDF werden die meisten meiner Anforderungen erfüllt. Meistens - Ich kehre immer noch zu Matlab zurück, wenn ich Satelliten-Retrievals mit Feed-Forward-Multilayer-Perceptrons trainieren muss, z. B. mit künstlichen neuronalen Netzen.

Wie es bei Open-Source-Software nicht ungewöhnlich ist, gibt es mehr als ein Paket, das neuronale Netzwerke unterstützt. Beträchtlich mehr als eins:

  • Vor einiger Zeit habe ich PyBrain ausprobiert , das "Schweizer Taschenmesser für neuronale Netze", aber es ist mir nicht gelungen, in kurzer Zeit zufriedenstellende Ergebnisse zu erzielen (sowohl in der Entwicklungs- als auch in der Laufzeit). Vielleicht habe ich nicht genug versucht, oder vielleicht ist es nicht wirklich auf meine genauen Bedürfnisse ausgerichtet.

  • Gerade entdeckte ich, dass es ein Paket namens Neurolab gibt , das vielversprechend aussieht: eine einfache und leistungsstarke Neural Network Library für Python mit einer API wie Neural Network Toolbox (NNT) von MATLAB .

  • Es gibt FFnet , eine schnelle und benutzerfreundliche Feed-Forward-Lösung für neuronales Netzwerktraining für Python

  • Es ist einfach

  • Es gibt Peach , eine Bibliothek für Computer Intelligence und maschinelles Lernen

  • Es gibt Python-Bindungen zu FANN , der Fast Artificial Neural Network- Bibliothek, die in diesem StackOverflow-Beitrag als De-facto-Standard beschrieben wird .

  • Es gibt wahrscheinlich noch andere.

Hat sich jemand die Mühe gemacht, die verschiedenen Optionen anhand von Kriterien wie Benutzerfreundlichkeit, Geschwindigkeit usw. miteinander zu vergleichen? Mein eigener Anwendungsfall sind Satellitenabrufe, zB die Anpassung einer stark nichtlinearen Funktion vieler Variablen. Ich bin sehr ein Benutzer von neuronalen Netzen; Ich bin nicht daran interessiert, ihr inneres Funktionieren zu erforschen.

Diese Frage zu Stats.SE ist verwandt, aber mit einem anderen Fokus.

Gerrit
quelle
Ihre Frage ist sehr interessant, aber ich denke, Sie fragen zu viel. Eine umfassende Bewertung verschiedener neuronaler Netzwerksoftware in Python ist zu umfassend, um in diesem Forum beantwortet zu werden. Es kann hilfreich sein, den Fokus Ihrer Frage auf ein bestimmtes Kriterium und eine für Sie interessante Software zu beschränken.
Paul
Außerdem können wir Ihre Frage nicht migrieren, da sie jetzt zu alt ist . Wenn Sie der Meinung sind, dass eine andere SE-Site für Ihre Frage besser geeignet ist, müssen Sie diese löschen und auf der anderen Site erneut veröffentlichen. Selbst wenn Sie die Frage erneut stellen, liegt es meines Erachtens im besten Interesse, den Umfang Ihrer Frage einzuschränken, um die Wahrscheinlichkeit zu erhöhen, eine gute Antwort zu erhalten.
Paul
Nicht Python, aber momentan benutze ich caffe für das neuronale Netzwerk. Meistens für Faltungsnetzwerke, aber es ist noch einfacher, ein herkömmliches NN einzurichten.
Siyuan Ren
Cross-Site-Duplikat: datascience.stackexchange.com/q/694/6
Gerrit

Antworten:

1

Hast du scikit-learn ausprobiert ? Es ist absolut nicht meine Domain, aber ich habe einige sehr positive Nutzererfahrungen gehört ...

GertVdE
quelle
Würde in die Kategorie fallen Es gibt wahrscheinlich andere - das Hinzufügen einer weiteren Bibliothek zur Liste löst mein Problem nicht, sondern erweitert den Umfang eines
Vergleichs, den
Nach allem, was ich gehört und gelesen habe, besteht der Vorteil von Scikit-Learn darin, dass es sich um ein Framework handelt, das eine Vielzahl von Methoden enthält. Möglicherweise erleichtert dies Ihre Arbeit, wenn Sie einen Vergleich der auf Ihr Problem angewendeten Methoden durchführen.
GertVdE
3
scikit-learn enthält keine neuronalen Netzwerkmethoden, das künstliche neuronale Netzwerkmodell wurde in Version 0.12 entfernt und es wurde zu der Zeit empfohlen, dass Benutzer, die diese Funktionalität benötigten, zu PyBrain wechseln.
Aron Ahmadia
1

Hast du dir Theano angesehen ? es scheint ziemlich mächtig .

Alex
quelle
1
In der Tat ist Theano sehr mächtig. Aber es ist der Compiler (oder das Framework), mit dem man Python-Code schreiben kann, der dann kompiliert und auf der GPU ausgeführt wird. Mit Theano können NNs implementiert werden, es ist jedoch keine ML-Bibliothek.
Artem Sobolev
1

Ich bin auch von der Verwendung neuronaler Netze in Matlab zu Python gekommen. Eine der mächtigsten Bibliotheken in Python ist "Pylearn2" http://deeplearning.net/software/pylearn2/ . Derzeit ist dies die aktivste Bibliothek und es gibt viele verschiedene Funktionen, mit denen Sie experimentieren können. Es basiert auf Theano und ist daher schnell und kann auf GPUs ausgeführt werden. Leider ist dies auch der Nachteil: Die API ändert sich ständig und weist eine hohe Lernkurve auf. Sie müssen Ihre neuronalen Netze auch mit YAML-Dateien konfigurieren. Ich habe PyBrain erfolgreicher für die Erstellung grundlegender neuronaler Netze eingesetzt. Ich brauchte eine Lösung für ein Regressionsproblem, bei dem ich die Auslastung eines Kraftwerks anhand von Wetterfaktoren prognostizieren musste. Die Anleitung hier: http://fastml.com/pybrain-a-simple-neural-networks-library-in-python/ gab mir 90% der Lösung, die ich brauchte.

Ein Problem, das ich bei PyBrain gefunden habe, war die Geschwindigkeit. Es ist nativ in Python geschrieben. Ich habe festgestellt, dass das Training eines neuronalen Netzwerks ~ 50x langsamer ist als Matlab. Einige andere haben es geschafft, den Schulungsprozess von PyBrain mit der arac-Bibliothek zu beschleunigen.

Diarmaid O Cualain
quelle