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
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' % (____, ____))