Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Hämta ett enskilt batch med enkoderens indata (engelska meningar från index i till i+bsize) med funktionen sents2seqs(). Indata ska vara omvända och onehot-kodade.
  • Hämta ett enskilt batch med dekoderens utdata (franska meningar från index i till i+bsize) med funktionen sents2seqs(). Indata ska vara onehot-kodade.
  • Träna modellen på ett enskilt batch med data som innehåller en_x och de_y.
  • Beräkna utvärderingsmetrikerna för en_x och de_y genom att utvärdera modellen med ett batch_sizebsize.

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))  
Redigera och kör kod