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

Problém mizejících gradientů

Druhým možným problémem s gradienty je jejich mizení – gradienty se blíží nule. Tento problém se řeší obtížněji, protože ho není snadné odhalit. Pokud se ztrátová funkce v každém kroku nezlepšuje, je to proto, že gradienty klesly na nulu a váhy se neaktualizovaly? Nebo model prostě není schopen se učit?

Tento problém se u modelů RNN vyskytuje častěji tehdy, když je potřeba dlouhá paměť (například při práci s dlouhými větami).

V tomto cvičení sledujeme daný problém na datech IMDB s vybranými delšími větami. Data jsou načtena do proměnných X a y, k dispozici jsou také třídy Sequential, SimpleRNN, Dense a matplotlib.pyplot jako plt. Model byl předtrénován po dobu 100 epoch – jeho váhy a průběh trénování jsou uloženy v souboru model_weights.h5 a v proměnné history.

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

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

Zobrazit kurz

Pokyny k cvičení

  • Přidej do modelu vrstvu SimpleRNN.
  • Načti předtrénované váhy do modelu pomocí metody .load_weights().
  • Přidej do grafu přesnost na trénovacích datech dostupnou pod atributem 'acc'.
  • Zobraz graf pomocí metody .show().

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 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.____()
Upravit a spustit kód