Używam sieci neuronowych do rozwiązywania różnych problemów związanych z uczeniem maszynowym. Używam Pythona i Pybrain, ale ta biblioteka jest prawie wycofana. Czy istnieją inne dobre alternatywy w Pythonie?
machine-learning
python
neural-network
marcodena
źródło
źródło
Odpowiedzi:
AKTUALIZACJA: krajobraz nieco się zmienił, odkąd odpowiedziałem na to pytanie w lipcu '14, a niektórzy nowi gracze weszli w kosmos. W szczególności polecam sprawdzenie:
Każdy z nich ma swoje mocne i słabe strony, więc daj im szansę i sprawdź, który najlepiej pasuje do Twojego przypadku użycia. Chociaż rok temu poleciłbym korzystanie z PyLearn2, społeczność nie jest już aktywna, więc polecam szukać gdzie indziej. Moja pierwotna odpowiedź na odpowiedź znajduje się poniżej, ale w tym momencie jest w dużej mierze nieistotna.
PyLearn2 jest ogólnie uważany za bibliotekę z wyboru dla sieci neuronowych i głębokiego uczenia się w pythonie. Został zaprojektowany z myślą o łatwym eksperymentowaniu naukowym, a nie łatwości użytkowania, więc krzywa uczenia się jest dość stroma, ale jeśli nie spiesz się i postępuj zgodnie z samouczkami, myślę, że będziesz zadowolony z funkcjonalności, którą zapewnia. Zapewnione jest wszystko, od standardowych wielowarstwowych perceptronów po ograniczone maszyny Boltzmanna, sieci konwekcyjne i autokodery. Jest świetna obsługa GPU i wszystko jest oparte na Theano, więc wydajność jest zazwyczaj całkiem dobra. Źródło PyLearn2 jest dostępne na github .
Należy pamiętać, że PyLearn2 ma obecnie odwrotny problem z PyBrain - zamiast zostać porzuconym, PyLearn2 jest w fazie rozwoju i podlega częstym zmianom.
źródło
Tensor Flow ( docs ) od Google to kolejna fajna struktura, która ma automatyczne różnicowanie. Kilka krótkich przemyśleń na temat Google Tensor Flow zapisałem na moim blogu wraz z przykładem MNIST, który mają w swoim samouczku.
Zobacz także: Mój samouczek Tensorflow XOR
Lasagne ( docs ) jest bardzo fajny, ponieważ korzysta z theano (→ możesz użyć GPU) i sprawia, że jest łatwiejszy w użyciu. O ile mi wiadomo, autor lasagne wygrał wyzwanie Kaggle Galaxy. To miłe z nolearn . Oto przykładowa sieć MNIST:
Caffe to biblioteka C ++, ale ma powiązania w języku Python. Możesz zrobić większość rzeczy za pomocą plików konfiguracyjnych (prototxt). Ma wiele opcji i może również korzystać z GPU.
źródło
Pylearn opiera się na Theano i jak wspomniano w innej odpowiedzi, korzystanie z biblioteki jest dość skomplikowane, dopóki go nie opanujesz.
W międzyczasie sugerowałbym użycie Theanets . Jest również zbudowany na szczycie Theano, ale jest o wiele łatwiejszy w obsłudze. Może to prawda, że nie ma wszystkich cech Pylearn, ale do podstawowej pracy wystarczy.
Jest to również oprogramowanie typu open source, dzięki czemu można dodawać niestandardowe sieci w locie, jeśli się odważy. :)
EDYCJA: grudzień 2015. Ostatnio zacząłem używać Keras . Jest to nieco niższy poziom niż Theanets, ale o wiele potężniejszy. Do podstawowych testów Theanets jest odpowiedni. Ale jeśli chcesz przeprowadzić badania w zakresie ANN Keras, jest znacznie bardziej elastyczny. Ponadto Keras może wykorzystywać Tensorflow jako backend.
źródło
TensorFlow (Google, wydany 09.11.2015) wygląda obiecująco.
FYI:
źródło
Pylearn2 wydaje się być biblioteką z wyboru, jednak uważam, że ich pliki konfiguracyjne YAML są odrażające.
Sam Python został zaprojektowany aby być łatwym językiem do prototypowania, dlaczego byś nie używać go do definiowania samych właściwości sieci? Mamy świetne edytory z funkcją autouzupełniania, które znacznie ułatwią Ci życie, a Python nie przypomina C ++, w którym musisz czekać na zakończenie długich kompilacji, zanim będziesz mógł uruchomić swój kod.
Z drugiej strony pliki YAML należy edytować przy użyciu standardowego edytora tekstu bez żadnej pomocy, co sprawia, że krzywa uczenia się jest jeszcze bardziej stroma.
Być może brakuje mi dużego obrazu, ale nadal nie rozumiem, o czym oni myśleli, nie sądzę, że prototypowanie w kodzie byłoby znacznie wolniejsze. Z tego powodu rozważam Theanets lub używam bezpośrednio Theano.
źródło
Lubię Bloki , które są również zbudowane na Theano. O wiele bardziej przystępny niż PyLearn2 i bardziej bogaty w funkcje niż Lasagne. Również starannie napisane.
Zaktualizowano styczeń 2016:
W chwili pisania Keras miał zdecydowanie największy impet. Jest bardzo modułowy i może działać zarówno na Theano, jak i Tensorflow, co daje mu ogromne możliwości.
źródło
MXNet :
źródło
Z tego, co słyszałem, Pylearn2 może być obecnie biblioteką z wyboru dla większości ludzi. Przypomina mi to niedawny post na blogu sprzed kilku miesięcy, w którym wymieniono wszystkie różne biblioteki uczenia maszynowego z krótkim wyjaśnieniem
https://www.cbinsights.com/blog/python-tools-machine-learning
Część, która może Cię tu zainteresować, to „Głębokie uczenie się”. O Pylearn2 pisze
źródło
Napisałem ten post, szczegółowo opisując niektóre z moich ulubionych:
Najlepsze biblioteki uczenia maszynowego w języku Python
Ponieważ wspomniano o ponad 30 różnych bibliotekach, nie opublikuję ich wszystkich tutaj, ale należą one do najpopularniejszych:
(Przepraszamy, nie mogę połączyć się z repozytoriami Github, ponieważ moje repozytorium wciąż ma <10 ...)Edycja: Dodano linki do repozytoriów Github.
źródło
neon :
źródło
Aby dodać więcej zasobów. Ostatnio opublikowano artykuł analizujący różnice między kilkoma pakietami sieci neuronowych a głębokimi sieciami neuronowymi.
Tutaj możesz znaleźć informacje . Wygląda na to, że Torch i TensorFlow są zwycięzcami.
Uwaga: nie wszystkie z nich są w języku python. Jednak opublikowałem go, aby otworzyć dyskusję.
źródło
Microsoft Cognition Toolkit (wcześniej znany jako CNTK) ma interfejs API języka Python . Między innymi powinien być dobry dla wielu procesorów graficznych :
Przykłady i samouczki można znaleźć na https://github.com/Microsoft/CNTK/tree/master/bindings/python
źródło
DyNet: zestaw narzędzi dynamicznej sieci neuronowej. Od 1}:
Wcześniej był znany jako cnn (którego wiązanie w Pythonie nosiło nazwę pycnn).
Bibliografia:
źródło
Polecam stosowanie tensorflow, który jest w fazie rozwoju i wspiera głębokie uczenie się. Możesz użyć wysokopoziomowego interfejsu API sieci neuronowych Keras, który działa na tensorflow i jest bardzo prosty w użyciu, po prostu wypróbuj samouczek i pokochasz go.
źródło
PyTorch
Zyskuje duże poparcie ze względu na łatwość użycia i podobieństwo do podstawowego języka Python.
Działa „linia po linii” (za pomocą dynamicznych wykresów), podobnie jak normalny Python i można go łatwo debugować - nawet przy użyciu standardowych instrukcji drukowania. Bardzo dobrze integruje się również z NumPy i innymi znanymi bibliotekami Python, takimi jak Scikit Learn.
Ponieważ ułatwia modelowanie, świetnie nadaje się do prototypowania i odkrywania nowych pomysłów w ogóle.
Obsługuje wiele procesorów graficznych i robi to w naprawdę łatwy sposób.
Sprawdź więcej funkcji tutaj .
Chociaż wiele z powyższych korzyści sprawia, że PyTorch jest o wiele przyjemniejszy w użyciu niż inne powszechnie używane biblioteki, warto wspomnieć, że nadchodzące główne wydanie Tensorflow domyślnie będzie również wykorzystywać dynamiczne tworzenie wykresów (inaczej tryb chętny ). Dzięki temu będzie porównywalny z PyTorch w użyciu.
źródło
Jeśli interesują Cię porównania wydajności, Soumith Chintala utrzymuje zestaw testów porównawczych konwergencji, które obejmują kilka wspomnianych już platform Pythona ( TensorFlow , chainer , neon , Theano ):
źródło
NeuPy to biblioteka Pythona dla sztucznych sieci neuronowych. NeuPy obsługuje wiele różnych typów sieci neuronowych, od prostego perceptronu po modele głębokiego uczenia.
źródło