Przetwarzanie danych
Teraz musisz przetworzyć dane dla nowego modelu, który przyjmuje dwa wejścia i generuje jedno wyjście. Dwa wejścia to zakodowane metodą one-hot angielskie słowa oraz zakodowane metodą one-hot francuskie słowa z pominięciem ostatniego słowa.
Wyjściem są zakodowane metodą one-hot francuskie słowa z pominięciem pierwszego słowa. Innymi słowy, w dekoderze każde wejściowe słowo francuskie ma przypisane wyjście – jest nim następne słowo. Tutaj nauczysz się, jak to zaimplementować.
Masz dostęp do funkcji sents2seqs() oraz zmiennych en_text i fr_text.
To ćwiczenie jest częścią kursu
Tłumaczenie maszynowe z Keras
Instrukcje do ćwiczenia
- Pobierz wsad danych wejściowych enkodera (od
idoi+bsize), korzystając z funkcjisents2seqs()(zakodowanych metodą one-hot i odwróconych). - Pobierz wsad danych wejściowych i wyjściowych dekodera (od
idoi+bsize), korzystając z funkcjisents2seqs()(zakodowanych metodą one-hot). - Wyodrębnij dane wejściowe dekodera (wszystkie słowa francuskie z wyjątkiem ostatniego) z
de_xy, wycinając odpowiedni fragment na wymiarze czasowym. - Wyodrębnij dane wyjściowe dekodera (wszystkie słowa francuskie z wyjątkiem pierwszego) z
de_xy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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))