Maskinöversättning med Keras
Thushan Ganegedara
Data Scientist and Author



Tar emot
Producerar
Matar rekursivt tillbaka det predikterade ordet och tillståndet till modellen som inmatning



sos markerar början av en översättning (dvs. en fransk mening).
sos som första ord till avkodaren och fortsätt predikteraeos markerar slutet av en översättning.
eosAnvänd en maxlängd som säkerhetsåtgärd för hur långt modellen kan prediktera
Importera lager och Model
# Import Keras layers
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
Definiera modellager
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)
Definiera Model-objekt
encoder = Model(inputs=en_inputs, outputs=en_state)
Input-lagerde_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
layersde_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)
Modeldecoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
l1w = l1.get_weights()l2 med wl2.set_weights(w)GRU, avkodarens GRU och avkodarens Denseen_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)
Detta kan även skrivas som,
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 + ' '
Maskinöversättning med Keras