Zacznij terazZacznij za darmo

Definiowanie enkodera

W tym ćwiczeniu zrobisz pierwszy krok w stronę stworzenia modelu tłumaczenia maszynowego: zaimplementujesz enkoder. Enkoder, który tu zbudujesz, jest znacznie prostszy niż modele stosowane w rzeczywistych aplikacjach, takich jak Google Translate. Nie martw się jednak – mimo swojej prostoty opiera się na tych samych koncepcjach co złożone modele produkcyjne. Do oznaczania elementów enkodera będziemy używać przedrostka en (np. en_gru), a do elementów dekodera – przedrostka de (np. de_gru).

Zauważysz, że wartość en_vocab ustawiono na 150 – mniej niż rzeczywista wartość 228, którą wcześniej znaleźliśmy. Zmniejszenie słownika ogranicza zapotrzebowanie modelu na pamięć. Nieznaczne okrojenie słownika jest jak najbardziej dopuszczalne, ponieważ usuwa się jedynie najrzadziej występujące słowa. W zadaniach tłumaczenia maszynowego rzadkie słowa mają zwykle mniejsze znaczenie niż te pospolite.

To ćwiczenie jest częścią kursu

Tłumaczenie maszynowe z Keras

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj warstwę Input dla wejścia o rozmiarze słownika en_vocab i długości sekwencji en_len, używając argumentu shape.
  • Zdefiniuj warstwę keras.layers.GRU z hsize jednostkami ukrytymi, która zwraca swój stan.
  • Pobierz wyjścia z warstwy GRU, przekazując do niej en_inputs, a następnie przypisz stan GRU do zmiennej en_state, a wyjście do zmiennej en_out.
  • Zdefiniuj model keras.models.Model, którego wejściem jest en_inputs, a wyjściem – en_state, po czym wyświetl podsumowanie modelu.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

import tensorflow.keras as keras

en_len = 15
en_vocab = 150
hsize = 48

# Define an input layer
en_inputs = keras.layers.____(____=____)
# Define a GRU layer which returns the state
en_gru = ____(____, ____=____)
# Get the output and state from the GRU
____, ____ = ____(____)
# Define and print the model summary
encoder = ____(inputs=____, ____=____)
print(encoder.____)
Edytuj i uruchom kod