ComeçarComece de graça

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

Ver curso

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.____()
Editar e executar o código