Träna modellen
I den här övningen tränar du den modell du implementerade tidigare. Visste du att Googles encoder-decoder-baserade maskinöversättningsmodell tog 2–4 dagar att träna?
Här använder du en liten datamängd med 1 500 meningar (dvs. en_text och fr_text) för att träna modellen. Den mängden räcker knappt för att uppnå god prestanda, men metoden är densamma – det handlar om att träna på mer data under längre tid. Du har också tillgång till modellen nmt och funktionen sents2seqs() som du implementerade tidigare. I den här övningen vänder du på enkodertexten för att förbättra prestandan. Här refererar en_x till enkoderens indata, medan de_x refererar till dekoderens indata.
Den här övningen är en del av kursen
Maskinöversättning med Keras
Övningsinstruktioner
- Hämta ett enskilt batch med enkoderens indata (engelska meningar från index
itilli+bsize) med funktionensents2seqs(). Indata ska vara omvända och onehot-kodade. - Hämta ett enskilt batch med dekoderens utdata (franska meningar från index
itilli+bsize) med funktionensents2seqs(). Indata ska vara onehot-kodade. - Träna modellen på ett enskilt batch med data som innehåller
en_xochde_y. - Beräkna utvärderingsmetrikerna för
en_xochde_ygenom att utvärdera modellen med ettbatch_sizepåbsize.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,data_size,bsize):
# Get a single batch of encoder inputs
en_x = ____('source', ____, onehot=____, reverse=____)
# Get a single batch of decoder outputs
de_y = sents2seqs('target', fr_text[____], onehot=____)
# Train the model on a single batch of data
nmt.____(____, ____)
# Obtain the eval metrics for the training data
res = nmt.____(____, de_y, batch_size=____, verbose=0)
print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))