Inizia subitoInizia gratis

Problema del gradiente esplosivo

Nell'esercizio del video hai visto due problemi che possono emergere quando lavori con modelli RNN: il vanishing e l'exploding gradient.

Questo esercizio esplora il problema del gradiente esplosivo, mostrando come la derivata di una funzione possa crescere in modo esponenziale e come risolverlo con una tecnica semplice.

I dati sono già caricati nell'ambiente come X_train, X_test, y_train e y_test.

Userai l'ottimizzatore Stochastic Gradient Descent (SGD) e la Mean Squared Error (MSE) come funzione di perdita.

Nel primo passaggio osserverai l'esplosione del gradiente calcolando la MSE sui set di train e test. Nel passaggio 2, cambierai l'ottimizzatore usando il parametro clipvalue per risolvere il problema.

In Keras lo Stochastic Gradient Descent è disponibile come SGD.

Questo esercizio fa parte del corso

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

Visualizza corso

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# Create a Keras model with one hidden Dense layer
model = Sequential()
model.add(Dense(25, input_dim=20, activation='relu', kernel_initializer=he_uniform(seed=42)))
model.add(Dense(1, activation='linear'))

# Compile and fit the model
model.compile(loss='mean_squared_error', optimizer=____(learning_rate=0.01, momentum=0.9))
history = model.fit(X_train, y_train, validation_data=(____, ____), epochs=100, verbose=0)

# See Mean Square Error for train and test data
train_mse = model.____(X_train, y_train, verbose=0)
test_mse = model.evaluate(X_test, y_test, verbose=0)

# Print the values of MSE
print('Train: %.3f, Test: %.3f' % (____, ____))
Modifica ed esegui il codice