Problema do gradiente desaparecido
O outro problema possível com gradientes é quando eles desaparecem ou vão para zero. Esse é um problema bem mais complicado de resolver porque não é tão fácil de detectar. Se a função de perda não melhora em cada etapa, é porque os gradientes foram para zero e, por isso, não atualizaram os pesos? Ou será que o modelo não consegue aprender?
Esse problema aparece mais em modelos RNN quando a memória precisa ser grande (com frases longas).
Neste exercício, você vai ver o problema nos dados do IMDB, com frases mais longas selecionadas. Os dados são carregados nas variáveis X e y, assim como nas classes Sequential, SimpleRNN, Dense e matplotlib.pyplot como plt. O modelo foi pré-treinado com 100 épocas, seus pesos e histórico estão guardados no arquivo model_weights.h5 e na variável history.
Este exercício faz parte do curso
Redes Neurais Recorrentes (RNNs) para Modelagem de Linguagem com Keras
Instruções do exercício
- Adicione uma camada “
SimpleRNN” ao modelo. - Carregue os pesos pré-treinados no modelo usando o método
.load_weights(). - Adicione a precisão dos dados de treinamento disponíveis no atributo “
'acc'” ao gráfico. - Mostra o gráfico usando o método
.show().
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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.____()