Definování dekodéru inferenčního modelu
Inferenční model je model, který se v praxi používá k provádění překladů na vyžádání uživatele. V tomto cvičení budeš implementovat dekodér inferenčního modelu.
Dekodér inferenčního modelu se liší od dekodéru tréninkového modelu. Dekodér nemůžeme zásobit francouzskými slovy, protože právě ta chceme předpovídat. Naštěstí existuje řešení: jako vstup pro inferenční dekodér můžeme použít předpovězené francouzské slovo z předchozího časového kroku. Při generování překladu tedy dekodér produkuje vždy jedno slovo a zároveň přijímá předchozí výstup jako vstup.
Pro toto cvičení jsou importovány proměnné hsize (velikost skrytého stavu vrstvy GRU), fr_len a fr_vocab. Nezapomeň, že prefix de označuje dekodér.
Toto cvičení je součástí kurzu
Machine Translation with Keras
Pokyny k cvičení
- Definuj vrstvu
Input, která přijímá dávku sekvencí francouzských slov zakódovaných metodou onehot (délka sekvence 1). - Definuj další vrstvu
Input, která přijímá dávku stavů o velikostihsizea slouží k předání předchozího stavu dekodéru. - Získej výstup a stav dekodéru
GRU. - Definuj model, který přijímá vstup francouzských slov
Inputa vstup předchozího stavuInputa na výstupu vrací finální predikci a nový stavGRU.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)
# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())