Problema de gradiente explosivo
En el ejercicio del vídeo, has aprendido dos problemas que pueden surgir al trabajar con modelos RNN: los problemas de gradiente desaparecido y gradiente explosivo.
Este ejercicio explora el problema del gradiente explosivo, mostrando que la derivada de una función puede aumentar exponencialmente, y cómo resolverlo con una técnica sencilla.
Los datos ya están cargados en el entorno como X_train, X_test, y_train y y_test.
Utilizarás un optimizador de descenso estocástico (SGD) y el error cuadrático medio (MSE) como función de pérdida.
En el primer paso, observarás cómo explota el gradiente al calcular el MSE en los conjuntos de entrenamiento y prueba. En el paso 2, cambiarás el optimizador utilizando el parámetro « clipvalue » (Optimizador de tipo) para resolver el problema.
El descenso estocástico por gradiente en Keras se carga como SGD.
Este ejercicio forma parte del curso
Redes neuronales recurrentes (RNN) para el modelado del lenguaje con Keras
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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' % (____, ____))