Generování překladů z modelu

Machine Translation with Keras

Thushan Ganegedara

Data Scientist and Author

Předchozí model vs. nový model

Enkodér dekodér s opakujícím se vektorem

Enkodér dekodér – otázka ke vstupu

Machine Translation with Keras

Natrénovaný model

Model trénovaný s teacher forcing

Machine Translation with Keras

Dekodér inferenčního modelu

  • Přijímá na vstup

    • Slovo zakódované jako one-hot
    • Stavový vstup (stav z předchozího časového kroku)
  • Produkuje

    • Nový stav
    • Predikci (tj. slovo)
  • Predikované slovo a stav jsou rekurzivně vraceny zpět jako vstupy modelu

Machine Translation with Keras

Úplný inferenční model

  • Inferenční model s rekurzivním dekodérem

Enkodér s rekurzivním dekodérem

  • Inferenční model z předchozí kapitoly Enkodér dekodér – předchozí
Machine Translation with Keras

Význam tokenů sos a eos

  • sos označuje začátek překladu (tj. francouzské věty).

    • Zadejte sos jako první slovo dekodéru a pokračujte v predikci
  • eos označuje konec překladu.

    • Predikce se zastaví, jakmile model predikuje eos
  • Pro jistotu nastavte maximální délku, kterou může model predikovat

Machine Translation with Keras

Definice enkodéru generátoru

  • Import vrstev a modelu

    # Import Keras layers
    import tensorflow.keras.layers as layers
    from tensorflow.keras.models import Model
    
  • Definice vrstev modelu

    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)
    
  • Definice objektu Model

    encoder = Model(inputs=en_inputs, outputs=en_state)
    
Machine Translation with Keras

Definice dekodéru generátoru

  • Definice vstupních vrstev Input dekodéru
de_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
  • Definice průběžných layers dekodéru
de_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)
  • Definice Model dekodéru
decoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
Machine Translation with Keras

Kopírování vah

  • Získání vah vrstvy l1
    • w = l1.get_weights()
  • Nastavení vah vrstvy l2 pomocí w
    • l2.set_weights(w)
  • Náš model má tři vrstvy s vahami
    • Enkodér GRU, dekodér GRU a dekodér Dense
en_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)

Což lze zapsat také jako:

en_gru.set_weights(tr_en_gru.get_weights())
Machine Translation with Keras

Generování překladů

en_sent = ['the united states is sometimes chilly during 
           december , but it is sometimes freezing in june .']
  • Převod anglické věty na sekvenci
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
  • Získání kontextového vektoru
de_s_t = encoder.predict(en_seq)
  • Převod "sos" (první slovo pro dekodér) na sekvenci
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
Machine Translation with Keras

Generování překladů

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 + ' '
Machine Translation with Keras

Čas na překlad!

Machine Translation with Keras

Preparing Video For Download...