Problema del gradiente desaparecido
El otro problema posible con los gradientes es cuando estos desaparecen o se reducen a cero. Este es un problema mucho más difícil de resolver porque no es tan fácil de detectar. Si la función de pérdida no mejora en cada paso, ¿es porque los gradientes llegaron a cero y, por lo tanto, no actualizaron los pesos? ¿O es porque el modelo no es capaz de aprender?
Este problema se produce con mayor frecuencia en los modelos RNN cuando se requiere una memoria larga (con frases largas).
En este ejercicio observarás el problema en los datos de IMDB, con frases más largas seleccionadas. Los datos se cargan en las variables X y y, así como en las clases Sequential, SimpleRNN, Dense y matplotlib.pyplot como plt. El modelo se entrenó previamente con 100 épocas, y sus pesos e historial se almacenan en el archivo model_weights.h5 y en la variable history.
Este ejercicio forma parte del curso
Redes neuronales recurrentes (RNN) para el modelado del lenguaje con Keras
Instrucciones del ejercicio
- Añade una capa «
SimpleRNN» al modelo. - Carga los pesos preentrenados en el modelo utilizando el método
.load_weights(). - Añade al gráfico la precisión de los datos de entrenamiento disponibles en el atributo «
'acc'». - Muestra el gráfico utilizando el método
.show().
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
# Load pre-trained weights
model.____('model_weights.h5')
# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()