2014-09-17 18 views
8

Attualmente sto imparando la programmazione con GPU per migliorare le prestazioni degli algoritmi di apprendimento automatico. Inizialmente io cerco di imparare a programmare CUDA con puro c, poi ho trovato pycuda che per me un involucro di libreria CUDA, e poi ho trovato Theano e pylearn2 e ottenuto un po 'confuso:pycuda vs theano vs pylearn2

li capisco in questo modo:

  1. pycuda: involucro pitone per la libreria CUDA
  2. Theano: simile a NumPy ma trasparente per GPU e CPU
  3. pylearn2: pacchetto di apprendimento profonda che costruire su Theano e implementato diversi machine learning/modello di apprendimento profondo

Dato che sono nuovo alla programmazione GPU, dovrei iniziare a imparare dall'implementazione C/C++ o partire da pycuda è sufficiente, anche a partire da theano? Per esempio. Vorrei implementare il modello randomForest dopo aver appreso la programmazione della GPU. Grazie.

risposta

8

La tua comprensione è quasi giusta. Vorrei solo aggiungere alcune osservazioni su Theano. È molto più di un Numpy che può essere eseguito sulla GPU. Theano è infatti un compilatore di espressioni matematiche, che traduce espressioni matematiche simboliche in codice C/CUDA altamente ottimizzato, destinato sia a CPU che a GPU. Il codice che genera è spesso molto più efficiente di quello che scriverà la maggior parte dei programmatori. Theano può anche fare differenziazione simbolica (molto utile per l'ottimizzazione basata sul gradiente) e ha anche una caratteristica per ottenere una migliore stabilità numerica (che probabilmente è qualcosa di utile, anche se non so per quale reale fino a che punto). È molto probabile che Theano sia sufficiente per implementare ciò di cui hai bisogno. Se decidi ancora di imparare CUDA o PyCUDA, scegli quello basato sulla lingua che userai, C++ o Python.

+0

Molto chiaro, grazie! Ancora una domanda, ma probabilmente non è adatta a chiederlo qui: esiste un pacchetto simile a quello in lingua R? – user1754197

+0

Non proprio. Ci sono alcuni pacchetti che implementano le operazioni di base dell'algebra lineare e alcune funzioni di livello superiore (come lm), ma sotto il cofano funzionano in modo molto diverso da Theano, cioè sono solo pacchetti regolari, non sono compilatori di espressioni. –

+0

Avete commenti su pylearn2? –

Problemi correlati