Začněte nyníZačněte zdarma

Problém explodujícího gradientu

Ve videolekci ses seznámil/a se dvěma problémy, které mohou nastat při práci s modely RNN: mizejícím a explodujícím gradientem.

Toto cvičení se zaměřuje na problém explodujícího gradientu – ukážeme si, že derivace funkce může růst exponenciálně, a jak tento problém vyřešit jednoduchou technikou.

Data jsou v prostředí už načtena jako X_train, X_test, y_train a y_test.

Použiješ optimalizátor Stochastic Gradient Descent (SGD) a jako ztrátovou funkci Mean Squared Error (MSE).

V prvním kroku sleduj explozi gradientu výpočtem MSE na trénovací a testovací sadě. Ve druhém kroku uprav optimalizátor pomocí parametru clipvalue a problém vyřeš.

Stochastic Gradient Descent je v Kerasu načten jako SGD.

Toto cvičení je součástí kurzu

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Zobrazit kurz

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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' % (____, ____))
Upravit a spustit kód