LoslegenKostenlos loslegen

Vorverarbeitung von Daten

Jetzt musst du die Daten für unser neues Modell mit zwei Eingaben und einer Ausgabe bearbeiten. Die beiden Eingaben sind die One-Hot-codierten englischen Wörter und die One-Hot-codierten französischen Wörter, außer dem letzten Wort.

Das Ergebnis wären die French Wörter in One-Hot-Kodierung, ohne das erste Wort. Mit anderen Worten: Im Decoder hat jedes eingegebene französische Wort ein Wort als Ausgabe, nämlich das nächste Wort. Hier erfährst du, wie du das umsetzen kannst.

Du hast die Funktionen „ sents2seqs() “, „ en_text “ und „ fr_text “ zur Verfügung.

Diese Übung ist Teil des Kurses

Maschinelle Übersetzung mit Keras

Kurs anzeigen

Anleitung zur Übung

  • Hol dir mit der Funktion „ sents2seqs() “ (onehot-codiert und umgekehrt) eine Reihe von Encoder-Eingaben (von „ i “ bis „ i+bsize “).
  • Hol dir mit der Funktion „ sents2seqs() “ (onehot-codiert) einen Stapel von Decodereingängen und -ausgängen (von „ i “ bis „ i+bsize “).
  • Trenne die Decodereingänge (alle französischen Wörter außer dem letzten) von „ de_xy “, indem du nach der Zeitdimension schneidest.
  • Trenn die Decoder-Ausgänge (alle französischen Wörter außer dem ersten) von „ de_xy “.

Interaktive Übung

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

bsize = 250
for i in range(0, len(en_text), bsize):
  # Get the encoder inputs using the sents2seqs() function
  en_x = ____('source', ____[____:____], onehot=True, reverse=____)
  # Get the decoder inputs/outputs using the sents2seqs() function
  de_xy = sents2seqs('target', ____[____:____], onehot=True)
  # Separate the decoder inputs from de_xy
  de_x = de_xy[:,____,:]
  # Separate the decoder outputs from de_xy
  de_y = de_xy[:,____,:]
  
  print("Data from ", i, " to ", i+bsize)
  print("\tnp.argmax() => en_x[0]: ", np.argmax(en_x[0], axis=-1))
  print("\tnp.argmax() => de_x[0]: ", np.argmax(de_x[0], axis=-1))
  print("\tnp.argmax() => de_y[0]: ", np.argmax(de_y[0], axis=-1))
Code bearbeiten und ausführen