Il modello sequenziale di Keras: un esempio di utilizzo.

Il modello sequenziale di Keras: un esempio di utilizzo.

Aprile 6, 2022 1 Di Ruggero Grando

DEFINIZIONE DEL MODELLO KERAS

Ora, non ci resta che costruire la nostra rete neurale e impilare i vari livelli della rete. Per farlo dobbiamo scrivere il codice seguente.

26 # define the Sequential keras model
27 model = Sequential()
28 model.add(Dense(12, input_dim=8, activation='relu'))
29 model.add(Dense(8, activation='relu'))
30 model.add(Dense(1, activation='sigmoid'))

Come definito a priori, assegniamo il modello sequenziale alla variabile model nella riga 27. Nella riga 28 definiamo come input del nostro modello le 8 colonne dell’array XScaler che abbiamo ricavato precedentemente. Nella stessa riga di codice, aggiungiamo un livello hidden(nascosto) di ben 12 neuroni con funzione di attivazione “ReLu”. Nella riga 29 definiamo un secondo livello con 8 neuroni e funzione di attivazione “ReLu” e infine con la riga 30 completiamo il modello di rete neurale con un neurone e funzione di attivazione sigmoidale. Per ora, senza scendere nei particolari, cerchiamo di seguire l’esempio come descritto.

COME FACCIO A SCEGLIERE IL NUMERO DI LAYERS DELLA RETE NEURALE.

Non c’è una regola ben precisa, il numero di layers della rete neurale si determina eseguendo delle prove sul campo. Nel caso oggetto di esempio, il modello proposto potrebbe non essere quello ottimale e quindi non resta che sperimentare aggiungendo o togliendo dei layers alla nostra rete neurale. In realtà, come vedremo, in uno dei prossimi articoli, aggiungere o togliere livelli alla rete neurale aggiunge alcune complessità e porta a una classificazione o troppo precisa (overfitting), e quindi valida solo per i dati di training, o al contrario troppo imprecisa (underfitting), e quindi non in grado di determinare in modo sufficientemente corretto la presenza o meno di diabete e dunque inutile.

Per maggiori informazioni su quanti layers e quanti neuroni debba avere una rete neurale, vi invito a leggere il seguente articolo:
https://www.datacamp.com/community/tutorials/layers-neurons-artificial-neural-networks

QUALI FUNZIONI DI ATTIVAZIONE SCEGLIERE?

Per quanto riguarda la funzione di attivazione, ho scelto la funzione “ReLu” perché attualmente è quella che produce il risultato migliore. Invece, la funzione di attivazione sigmoidale presente nell’ultimo layer è stata selezionata perché produce dei risultati in formato binario, o 1 o 0, ed è quello che ci interessa per capire se il soggetto ha il diabete o meno.

COMPILAZIONE DEL MODELLO DI KERAS

La compilazione del modello utilizzerà le librerie Tensorflow o Theano. Quest’ultime rappresentano individualmente il backend di Keras. Il codice Python che dovremmo utilizzare per compilare il nostro modello sarà il seguente:

31 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

Come vedete al metodo compile del nostro model passiamo alcuni parametri. In particolare, utilizziamo il valore binary_crossentropy per il parametro loss. Con tale parametro si definisce la funzione di costo della rete neurale, in sostanza questa non è altro che la funzione che ci permette di minimizzare la differenza tra il valore reale e quello predetto. Successivamente, come ottimizzatore, utilizzeremo il valore adam che rappresenta l’algoritmo di discesa del gradiente usato nella maggior parte dei problemi. Infine, il valore accuracy associato al parametro metrics ci permette di definire un valore di quanto il modello sia “accurato”. Variando principalmente i primi due parametri possiamo ottenere dei risultati differenti dal modello di rete neurale.

Sapendo che le funzioni di costo che possiamo applicare alla classificazione binaria sono il Binary Cross-Entropy, l’Hinge Loss, e lo Squared Hinge Loss, i test verranno suddivisi in tre gruppi. il primo gruppo con il valore della funzione di loss uguale al valore “Binary_Crossentropy” e ottimizzatore variabile tra gli otto disponibili. Il secondo gruppo con il valore della funzione di loss “Hinge Loss” e ottimizzatore variabile tra gli otto disponibili. Infine, il terzo gruppo con il valore della funzione di loss “Squared Hinge Loss” e ottimizzatore variabile tra quelli disponibili.

Pagina Precedente / Pagina Successiva

No votes yet.
Please wait...

Pagine: 1 2 3 4 5 6 7 8 9 10