Traduction automatique avec Keras
Thushan Ganegedara
Data Scientist and Author



Reçoit
Produit
Rétroalimentez récursivement le mot prédit et l'état dans le modèle comme entrées



sos marque le début d'une traduction (p. ex. une phrase en français).
sos comme premier mot au décodeur et poursuivez les prédictionseos marque la fin d'une traduction.
eosPar sécurité, fixez une longueur maximale que le modèle peut prédire
Importer les couches et Model
# Import Keras layers
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
Définir les couches du modèle
en_inputs = layers.Input(shape=(en_len,en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
en_out, en_state = en_gru(en_inputs)
Définir l'objet Model
encoder = Model(inputs=en_inputs, outputs=en_state)
Input du décodeurde_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
layers intermédiaires du décodeurde_gru = layers.GRU(hsize, return_state=True) de_out, de_state_out = de_gru(de_inputs, initial_state=de_state_in)de_dense = layers.Dense(fr_vocab, activation='softmax') de_pred = de_dense(de_out)
Model du décodeurdecoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
l1w = l1.get_weights()w à la couche l2l2.set_weights(w)GRU, Décodeur GRU et Décodeur Denseen_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)
Ce qui peut aussi s'écrire :
en_gru.set_weights(tr_en_gru.get_weights())
en_sent = ['the united states is sometimes chilly during
december , but it is sometimes freezing in june .']
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
de_s_t = encoder.predict(en_seq)
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
fr_sent = ''for _ in range(fr_len): de_prob, de_s_t = decoder.predict([de_seq,de_s_t])de_w = probs2word(de_prob, fr_tok)de_seq = word2onehot(fr_tok, de_w, fr_vocab)if de_w == 'eos': break fr_sent += de_w + ' '
Traduction automatique avec Keras