CommencerCommencer gratuitement

Formation du modèle basé sur l'intégration de mots

Vous apprendrez ici comment mettre en œuvre le processus d'entraînement d'un modèle de traduction automatique qui utilise des plongements de mots. Un mot est représenté par un seul nombre au lieu d'un vecteur codé en one-hot comme vous l'avez fait dans les exercices précédents. Vous allez entraîner le modèle pendant plusieurs époques tout en parcourant l'ensemble des données par lots.

Pour cet exercice, vous disposez de données d'entraînement (tr_en et tr_fr) sous la forme d'une liste de phrases. Vous n'utiliserez qu'un très petit échantillon (1 000 phrases) des données réelles, car sinon l'entraînement pourrait prendre beaucoup de temps. Vous disposez également de la fonction d'sents2seqs() et du modèle nmt_emb que vous avez implémentés dans l'exercice précédent. Veuillez noter que nous utilisons en_x pour désigner les entrées de l'encodeur et de_x pour désigner les entrées du décodeur.

Cet exercice fait partie du cours

Traduction automatique avec Keras

Afficher le cours

Instructions

  • Obtenez un seul lot de phrases en français sans encodage onehot à l'aide de la fonction sents2seqs().
  • Veuillez extraire tous les mots sauf le dernier de l'adresse suivante : de_xy.
  • Obtenez tous les mots sauf le premier à partir de de_xy_oh (mots français avec encodage onehot).
  • Entraînez le modèle à l'aide d'un seul lot de données.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

for ei in range(3):
  for i in range(0, train_size, bsize):    
    en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=False, reverse=True)
    # Get a single batch of French sentences with no onehot encoding
    de_xy = ____('target', ____[i:i+bsize], ____=____)
    # Get all words except the last word in that batch
    de_x = de_xy[:,____]
    de_xy_oh = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
    # Get all words except the first from de_xy_oh
    de_y = de_xy_oh[____,____,____]
    # Training the model on a single batch of data
    nmt_emb.train_on_batch([____,____], ____)    
    res = nmt_emb.evaluate([en_x, de_x], de_y, batch_size=bsize, verbose=0)
    print("{} => Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))
Modifier et exécuter le code