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
Rekursive neuronale Netze (RNNs) für die Sprachmodellierung mit Keras
Anleitung zur Übung
- 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 Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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.____()