Definování vrstev modelu s Teacher Forcing
V tomto cvičení definuješ vylepšenou verzi modelu strojového překladu, který jsi vytvořil/a dříve. Věděl/a jsi, že modely jako Google Translate používají právě techniku Teacher Forcing při trénování?
Jak už víš, předchozí model je potřeba mírně upravit, aby Teacher Forcing fungoval správně. Provedeš nezbytné změny. K dispozici máš jazykové parametry en_len a fr_len (délka doplněné anglické/francouzské věty), en_vocab a fr_vocab (velikost slovníku anglického/francouzského datasetu) a hsize (velikost skryté vrstvy GRU). Pamatuj, že dekodér přijímá francouzskou sekvenci o jeden prvek kratší než fr_len. Prefix en označuje vše, co se týká enkodéru, a prefix de dekodéru.
Toto cvičení je součástí kurzu
Machine Translation with Keras
Pokyny k cvičení
- Importuj submodul
layersztensorflow.keras. - Získej výstup enkodéru a hodnoty stavu a přiřaď je do proměnných
en_outaen_state. - Definuj vstupní vrstvu
Inputdekodéru, která přijímá sekvenci délkyfr_len-1složenou z francouzských slov zakódovaných metodou onehot. - Definuj vrstvu
TimeDistributedtypuDensese softmax aktivací afr_vocabneurony.
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 the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)