LoslegenKostenlos starten

Problem mit dem verschwindenden Gradienten

Ein anderes mögliches Problem mit Gradienten ist, wenn sie verschwinden oder auf Null gehen. Das ist echt schwieriger zu lösen, weil es nicht so leicht zu erkennen ist. Wenn sich die Verlustfunktion nicht bei jedem Schritt verbessert, liegt das daran, dass die Gradienten auf Null gegangen sind und die Gewichte daher nicht aktualisiert wurden? Oder liegt es daran, dass das Modell nicht lernen kann?

Dieses Problem tritt häufiger bei RNN-Modellen auf, wenn ein langer Speicher benötigt wird (lange Sätze).

In dieser Übung wirst du das Problem anhand der IMDB- Daten beobachten, wobei längere Sätze ausgewählt wurden. Die Daten werden in die Variablen „ X “ und „ y “ geladen, sowie in die Klassen „ Sequential “, „ SimpleRNN “, „ Dense “ und „ matplotlib.pyplot “ als „ plt “. Das Modell wurde mit 100 Epochen vortrainiert, seine Gewichte und der Verlauf sind in der Datei „ model_weights.h5 ” und der Variablen „ history ” gespeichert.

Diese Übung ist Teil des Kurses

<Kurs>Rekursive neuronale Netze (RNNs) für die Sprachmodellierung mit Keras</Kurs>
Kurs ansehen

Übungsanweisungen

  • Füge dem Modell eine „ SimpleRNN “-Ebene hinzu.
  • Lade die vortrainierten Gewichte mit der Methode „ .load_weights() “ in das Modell.
  • Füge die Genauigkeit der Trainingsdaten, die auf dem Attribut 'acc' verfügbar sind, zum Diagramm hinzu.
  • Zeig die Grafik mit der Methode „ .show() “ an.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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.____()
Code bearbeiten und ausführen