LoslegenKostenlos loslegen

Das Modell mit Validierung trainieren

Hier trainierst du das Modell mit Teacher Forcing und machst auch einen Validierungsschritt. Du trainierst das Modell über mehrere Epochen und mehrere Iterationen. Am Ende jeder Epoche führst du dann den Validierungsschritt durch und bekommst die Ergebnisse.

Dafür hast du „ en_text ” (Sätze auf Englisch), „ fr_text ” (Sätze auf Französisch), die Funktion „ sents2seqs() ” und „ nmt_tf ” (das kompilierte Modell). Außerdem sind schon die Dateien „ tr_en “ und „ tr_fr “ (Trainingsdaten) sowie „ v_en “ und „ v_fr “ (Validierungsdaten) geladen.

Diese Übung ist Teil des Kurses

Maschinelle Übersetzung mit Keras

Kurs anzeigen

Anleitung zur Übung

  • Extrahier die Decodereingaben (alle Wörter außer dem letzten) und -ausgaben (alle Wörter außer dem ersten) aus „ de_xy “.
  • Trainiere das Modell mit einem einzigen Datenbatch.
  • Erstell Decodereingänge und -ausgänge aus den Validierungsdaten, so wie du es bei den Trainingsdaten gemacht hast.
  • Teste das Modell mit dem Validierungsdatensatz, um den Validierungsverlust und die Genauigkeit zu ermitteln.

Interaktive Übung

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

for ei in range(n_epochs):
  for i in range(0,train_size,bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
    de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Create a single batch of decoder inputs and outputs
    de_x, de_y = ____[:,____,:], de_xy[:,____,:]
    # Train the model on a single batch of data
    nmt_tf.____([____,____], de_y)      
  v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
  # Create a single batch of validation decoder inputs and outputs
  v_de_xy = ____('target', ____, onehot=____)
  v_de_x, v_de_y = ____[____], v_de_xy[____]
  # Evaluate the trained model on the validation data
  res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
  print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))
Code bearbeiten und ausführen