Definiera lagren för Teacher Forcing-modellen
Nu ska du definiera en förbättrad version av den maskinöversättningsmodell du byggde tidigare. Visste du att modeller som Googles maskinöversättare använder just Teacher Forcing-tekniken för att träna sin modell?
Som du redan sett behöver din tidigare modell justeras något för att kunna använda Teacher Forcing. I den här övningen gör du de nödvändiga ändringarna i modellen. Du har fått tillgång till språkparametrarna en_len och fr_len (längden på utfyllda engelska respektive franska meningar), en_vocab och fr_vocab (vokabulärstorlek för engelska respektive franska datamängder) samt hsize (den dolda lagerstorleken för GRU-lagren). Kom ihåg att avkodaren tar emot en fransk sekvens med ett element färre än fr_len. Prefixet en används för kodnarrelaterade element och de för avkodarrelaterade element.
Den här övningen är en del av kursen
Maskinöversättning med Keras
Övningsinstruktioner
- Importera submodulen
layersfråntensorflow.keras. - Hämta kodarens utdata och tillståndsvärden och tilldela dem till
en_outrespektiveen_state. - Definiera ett
Input-lager för avkodaren som tar emot en sekvens av längdenfr_len-1med one-hot-kodade franska ord. - Definiera ett
TimeDistributedDensesoftmax-lager medfr_vocabnoder.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)