Kom igångKom igång gratis

Problemet med exploderande gradienter

I videoövningen lärde du dig om två problem som kan uppstå när man arbetar med RNN-modeller: problemet med försvinnande respektive exploderande gradienter.

Den här övningen utforskar problemet med exploderande gradienter och visar att derivatan av en funktion kan växa exponentiellt – samt hur man löser det med en enkel teknik.

Data är redan inläst i miljön som X_train, X_test, y_train och y_test.

Du kommer att använda en Stochastic Gradient Descent (SGD)-optimerare och Mean Squared Error (MSE) som förlustfunktion.

I det första steget observerar du de exploderande gradienterna genom att beräkna MSE på tränings- och testmängderna. I steg 2 ändrar du optimeraren med hjälp av parametern clipvalue för att lösa problemet.

Stochastic Gradient Descent i Keras är inläst som SGD.

Den här övningen är en del av kursen

Återkommande neurala nätverk (RNN) för språkmodellering med Keras

Visa kurs

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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' % (____, ____))
Redigera och kör kod