Librerie e software
Prendendo spunto dal post di Extar aggiungo un elenco delle librerie piu' utilizzate per creare ANNs...
Tensorflow: personalmente la mia preferita. La uso per gestire il training di diverse CNNs. In velocita' e' leggermente inferiore rispetto alle altre librerie ma cio' e' dovuto al fatto che e' stata creata recentemente (da Google) ed e' ancora in fase di ottimizzazione. E' nata per Python ma puo' essere utilizzata anche in C++. Ha un tool chiamato Tensorboard che permette di monitorare le variabili da browser. Le variabili sono connesse ed organizzate in grafi. Google sta investendo molto su questa libreria, percio' se decidete di cominciare (e continuare) con le ANNs forse e' meglio investire su Tensorflow. Supporta GPU NVIDIA e sistemi distribuiti, nell'ultima versione anche mobile devices.
Caffe: una libreria ampiamente utilizzata nell'ambito accademico. Realizzata dal Berkeley Vision and Learning Center qualche anno fa. Open source, piena di esempi, estremamente veloce. Nasce per essere utilizzata in C++ ma ha un wrapper per Python. Supporta GPU.
Theano: libreria in Python estremamente veloce. Perfetta se si vuole costruire una ANN dal basso. Diverse librerie di alto livello utilizzano Theano come core. Supporta GPU.
Lasagne: un nome divertente per una libreria leggera e veloce. Scritta in Python e basata su Theano, supporta Convolutional Network e Multilayer Perceptron. Preferita dai principianti in quanto facile da utilizzare. I layer della rete neurale possono essere creati con una sola linea di codice. Supporta GPU.
Torch: libreria molto utilizzata in ambito privato, vista la licenza estremamente permissiva. Viene attualmente utilizzata dal reparto di IA di Google (Deep Mind). Una libreria veloce e flessibile, nata per essere utilizzata in C (tramite Lua). Possiede un terminale Matlab-like. Possibilita' di utilizzo su sistemi embedded, iOS, Android ed FPGA. Supporto per GPU.
FANN: non e' una vera e propria libreria per il Deep Learning, ma merita di essere citata. Questa libreria e' nata molto prima delle altre ed e' ancora un buon punto di inizio se si vuole studiare come implementare una ANN da zero. Estremamente veloce e versatile, e' scritta in C ed e' multipiattaforma. Possiede wrapper per 20 liguaggi di programmazione, tra cui: C++, C#, Python, PHP, Matlab, Java, Ruby. Supporta GPU.
Tiny-CNN: progetto GitHub molto recente. La particolarita' di questa libreria sta nel fatto che puo' essere importata ricorrendo ad un unico header. Leggera e veloce e' scritta in C++11, non richiede installazione. Puo' importare modelli Caffe. Non supporta GPU.