Zacznij terazZacznij za darmo

Problem eksplodujących gradientów

W ćwiczeniu wideo poznałeś(-aś) dwa problemy, które mogą pojawić się podczas pracy z modelami RNN: zanikające i eksplodujące gradienty.

To ćwiczenie bada problem eksplodujących gradientów – pokazuje, że pochodna funkcji może rosnąć wykładniczo, oraz jak rozwiązać ten problem za pomocą prostej techniki.

Dane są już wczytane do środowiska jako X_train, X_test, y_train i y_test.

Użyjesz optymalizatora Stochastic Gradient Descent (SGD) oraz Mean Squared Error (MSE) jako funkcji straty.

W pierwszym kroku zaobserwujesz eksplozję gradientu, obliczając MSE na zbiorach treningowym i testowym. W kroku 2 zmienisz optymalizator, używając parametru clipvalue, aby rozwiązać ten problem.

Stochastic Gradient Descent w Keras jest wczytany jako SGD.

To ćwiczenie jest częścią kursu

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Zobacz kurs

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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' % (____, ____))
Edytuj i uruchom kod