Biblioteche e framework
In questo capitolo, metteremo in relazione il deep learning con le diverse librerie e framework.
Apprendimento profondo e Theano
Se vogliamo iniziare a programmare una rete neurale profonda, è meglio avere un'idea di come funzionano diversi framework come Theano, TensorFlow, Keras, PyTorch ecc.
Theano è una libreria python che fornisce una serie di funzioni per la creazione di reti profonde che si addestrano rapidamente sulla nostra macchina.
Theano è stato sviluppato presso l'Università di Montreal, in Canada, sotto la guida di Yoshua Bengio, un pioniere della rete profonda.
Theano ci consente di definire e valutare espressioni matematiche con vettori e matrici che sono matrici rettangolari di numeri.
Tecnicamente parlando, sia le reti neurali che i dati di input possono essere rappresentati come matrici e tutte le operazioni di rete standard possono essere ridefinite come operazioni di matrice. Questo è importante poiché i computer possono eseguire operazioni con le matrici molto rapidamente.
Possiamo elaborare più valori di matrice in parallelo e se costruiamo una rete neurale con questa struttura sottostante, possiamo utilizzare una singola macchina con una GPU per addestrare reti enormi in un intervallo di tempo ragionevole.
Tuttavia, se usiamo Theano, dobbiamo costruire la rete profonda da zero. La libreria non fornisce funzionalità complete per la creazione di un tipo specifico di deep net.
Invece, dobbiamo codificare ogni aspetto della rete profonda come il modello, i livelli, l'attivazione, il metodo di allenamento e qualsiasi metodo speciale per fermare l'overfitting.
La buona notizia, tuttavia, è che Theano consente di costruire la nostra implementazione su una parte superiore di funzioni vettorializzate fornendoci una soluzione altamente ottimizzata.
Ci sono molte altre librerie che estendono le funzionalità di Theano. TensorFlow e Keras possono essere utilizzati con Theano come backend.
Apprendimento profondo con TensorFlow
Google TensorFlow è una libreria Python. Questa libreria è un'ottima scelta per la creazione di applicazioni di deep learning di livello commerciale.
TensorFlow è nato da un'altra libreria DistBelief V2 che faceva parte di Google Brain Project. Questa libreria mira a estendere la portabilità dell'apprendimento automatico in modo che i modelli di ricerca possano essere applicati ad applicazioni di livello commerciale.
In modo molto simile alla libreria Theano, TensorFlow si basa su grafici computazionali in cui un nodo rappresenta dati persistenti o operazioni matematiche e gli archi rappresentano il flusso di dati tra i nodi, che è un array o tensore multidimensionale; da qui il nome TensorFlow
L'output di un'operazione o di un insieme di operazioni viene immesso come input nella successiva.
Anche se TensorFlow è stato progettato per reti neurali, funziona bene per altre reti in cui il calcolo può essere modellato come grafico del flusso di dati.
TensorFlow utilizza anche diverse funzionalità di Theano come l'eliminazione di espressioni comuni e di sottoespressioni, differenziazione automatica, variabili condivise e simboliche.
È possibile creare diversi tipi di reti profonde utilizzando TensorFlow come reti convoluzionali, Autoencoder, RNTN, RNN, RBM, DBM / MLP e così via.
Tuttavia, in TensorFlow non è disponibile alcun supporto per la configurazione di iperparametri, per questa funzionalità possiamo utilizzare Keras.
Deep Learning e Keras
Keras è una libreria Python potente e facile da usare per lo sviluppo e la valutazione di modelli di deep learning.
Ha un design minimalista che ci permette di costruire una rete strato per strato; addestrarlo ed eseguirlo.
Racchiude le efficienti librerie di calcolo numerico Theano e TensorFlow e ci consente di definire e addestrare modelli di reti neurali in poche righe di codice.
È un'API di rete neurale di alto livello, che aiuta a fare ampio uso del deep learning e dell'intelligenza artificiale. Funziona su una serie di librerie di livello inferiore tra cui TensorFlow, Theano e così via. Il codice Keras è portatile; possiamo implementare una rete neurale in Keras usando Theano o TensorFlow come back-end senza modifiche al codice.