Inizia subitoInizia gratis

Problema del gradiente che svanisce

L’altro possibile problema dei gradienti è quando i gradienti svaniscono, cioè tendono a zero. Questo è molto più difficile da risolvere perché non è facile da rilevare. Se la funzione di perdita non migliora a ogni passo, è perché i gradienti sono andati a zero e quindi non hanno aggiornato i pesi? Oppure è perché il modello non riesce a imparare?

Questo problema si verifica più spesso nei modelli RNN quando è richiesta una memoria lunga (frasi molto lunghe).

In questo esercizio osserverai il problema sui dati IMDB, selezionando frasi più lunghe. I dati sono caricati nelle variabili X e y, e sono già importate le classi Sequential, SimpleRNN, Dense e matplotlib.pyplot come plt. Il modello è stato pre-addestrato per 100 epoche; i suoi pesi e la sua history sono salvati nel file model_weights.h5 e nella variabile history.

Questo esercizio fa parte del corso

Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras

Visualizza corso

Istruzioni dell'esercizio

  • Aggiungi un livello SimpleRNN al modello.
  • Carica i pesi pre-addestrati nel modello usando il metodo .load_weights().
  • Aggiungi al grafico l’accuratezza dei dati di training disponibile nell’attributo 'acc'.
  • Mostra il grafico usando il metodo .show().

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

# Load pre-trained weights
model.____('model_weights.h5')

# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()
Modifica ed esegui il codice