2014-09-17 23 views
8

Ich lerne derzeit Programmierung mit GPU, um die Leistung von Machine Learning-Algorithmen zu verbessern. Zunächst versuche ich Programmierung CUDA mit reinem c zu lernen, dann fand ich pycuda die mir einen Wrapper von CUDA-Bibliothek, und dann fand ich Theano und pylearn2 und bekam ein wenig verwirrt:pycuda vs theano vs pylearn2

ich sie auf diese Weise verstehen:

  1. pycuda: python-Wrapper für CUDA-Bibliothek
  2. Theanos: ähnlich numpy aber transparent zu GPU und CPU
  3. pylearn2: tiefes Lernpaket, das auf Theanos bauen und implementiert mehr Maschinelles Lernen/Tieflernmodell

Da ich neu in der GPU-Programmierung bin, sollte ich anfangen, von der C/C++ - Implementierung zu lernen oder mit pycuda zu beginnen, reicht es aus, schon von theano aus? Z.B. Ich würde gerne RandomForest-Modell nach dem Lernen der GPU-Programmierung implementieren.Danke.

Antwort

8

Ihr Verständnis ist fast richtig. Ich möchte nur einige Bemerkungen über Theano hinzufügen. Es ist viel mehr als ein Numpy, der auf der GPU laufen kann. Theano ist in der Tat ein mathematischer Ausdruckcompiler, der symbolische mathematische Ausdrücke in hochoptimiertem C/CUDA-Code übersetzt, der sowohl für CPU als auch für GPU gedacht ist. Der Code, den er erzeugt, ist oft viel effizienter als der, den die meisten Programmierer schreiben würden. Theano kann auch eine symbolische Unterscheidung treffen (sehr nützlich für gradientenbasierte Optimierung) und hat auch eine Funktion, um eine bessere numerische Stabilität zu erreichen (was wahrscheinlich etwas Nützliches ist, obwohl ich nicht weiß, in welchem ​​Ausmaß). Es ist sehr wahrscheinlich, dass Theano ausreicht, um das zu implementieren, was Sie brauchen. Wenn Sie sich immer noch entscheiden, CUDA oder PyCUDA zu lernen, wählen Sie die Sprache, die Sie verwenden, C++ oder Python.

+0

Sehr klar, Danke! Eine weitere Frage, aber wahrscheinlich nicht geeignet, um es hier zu fragen: Gibt es ein ähnliches Paket wie theano in R Sprache? – user1754197

+0

Nicht ganz. Es gibt ein paar Pakete, die grundlegende lineare Algebra-Operationen und einige Funktionen auf höherer Ebene implementieren (wie lm), aber unter der Haube arbeiten sie sehr unterschiedlich von Theano, d.h. sie sind nur reguläre Pakete, sie sind keine Expression-Compiler. –

+0

Haben Sie eine Bemerkung zu pylearn2? –

Verwandte Themen