Implementare una semplice rete neurale con Python e Keras, mediante una manciata di righe di codice
Implementare una rete neurale con Python e Keras

Implementare una semplice rete neurale con Python e Keras, mediante una manciata di righe di codice

Una rete neurale artificiale (RNA) è un modello computazionale ispirato al funzionamento dei neuroni del cervello umano. Quest'ultima è composta da strati di neuroni artificiali (unità di elaborazione) interconnessi tra loro attraverso quelli che potremmo definire "pesi sinaptici".

Il processo di addestramento di una rete neurale è composto essenzialmente da due fasi: quella di propagazione in avanti e quella di retropropagazione dell'errore.

Non è stato fornito nessun testo alternativo per questa immagine

Di solito, una rete neurale è composta da tre strati. Il primo strato è l'input (I), che si occupa di elaborare gli input per adattarli alle esigenze dei neuroni. Il secondo strato è lo strato nascosto (H, hidden), che si occupa dell'elaborazione effettiva e può essere composto da più colonne di neuroni. Il terzo strato è l'output (O) e raccoglie i risultati per adattarli alle esigenze del blocco successivo della rete neurale. Queste reti possono diventare molto complesse e coinvolgere migliaia di neuroni e decine di migliaia di connessioni.

Durante l'addestramento, i pesi sinaptici vengono aggiornati gradualmente per migliorare le prestazioni della rete neurale nel compito specifico (come la classificazione o il riconoscimento di pattern, ad esempio).

Va specificato inoltre che all'output di un neurone, o di uno strato di neuroni, va applicata una funzione di attivazione (una funzione matematica). L'introduzione di funzioni di attivazione non lineari è fondamentale per consentire alle reti neurali di apprendere e rappresentare relazioni complesse nei dati.

Tutto molto affascinante. Ma come tradurre in pratica quanto detto?

Usando Python, uno dei linguaggi più utilizzati per lo sviluppo di reti neurali; sapevate che è possibile implementare una semplice rete neurale scrivendo ben poche righe di codice?

Di seguito viene fornito un esempio che utilizza Keras, una libreria open source per l'apprendimento automatico e le reti neurali. Keras è stata progettata per fornire un'interfaccia ad alto livello rispetto ad altre librerie di apprendimento automatico di livello inferiore e supporta diversi back-end come TensorFlow, Microsoft Cognitive Toolkit e Theano.

from keras.models import Sequentia
from keras.layers import Dense


model = Sequential([Dense(64, activation='relu', input_dim=100),
                    Dense(64, activation='relu'),
                    Dense(10, activation='softmax')])


model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])


model.fit(x_train, y_train, epochs=10, batch_size=32)


loss, accuracy = model.evaluate(x_test, y_test, batch_size=32)        

In questo esempio, abbiamo utilizzato la sintassi di inizializzazione sequenziale per definire il modello e abbiamo specificato gli strati utilizzando l'oggetto Dense (uno strato di neuroni totalmente connessi in una rete neurale; uno degli strati più comuni utilizzati per costruire reti neurali feedforward). Abbiamo anche utilizzato la sintassi compatta per compilare il modello, addestrarlo e valutarlo.

Il codice utilizza il metodo fit per addestrare il modello utilizzando i dati di addestramento (x_train e y_train) per un numero specificato di epoche (nell'esempio 10).

Successivamente il modello viene valutato mediante metodo evaluate, al fine di avere un riscontro circa le sue prestazioni, utilizzando i dati di test (x_test e y_test), calcolando la perdita e l'accuratezza.


Per visualizzare o aggiungere un commento, accedi

Altri articoli di Luca Montemagno

Altre pagine consultate