Modelden çeviri üretme

Keras ile Machine Translation

Thushan Ganegedara

Data Scientist and Author

Önceki model vs yeni model

Kodlayıcı kod çözücü tekrar vektörü

Kodlayıcı kod çözücü hangi girdi

Keras ile Machine Translation

Eğitilmiş model

Teacher Forcing ile eğitilmiş model

Keras ile Machine Translation

Çıkarım modelinin kod çözücüsü

  • Girdiler

    • One-hot kodlu bir kelime
    • Bir durum girdisi (önceki zaman adımından gelir)
  • Çıktılar

    • Yeni bir durum
    • Bir tahmin (yani bir kelime)
  • Tahmin edilen kelimeyi ve durumu yinelemeli olarak yeniden girdiler olarak verin

Keras ile Machine Translation

Tam çıkarım modeli

  • Yinelemeli kod çözücü ile çıkarım modeli

Kodlayıcı yinelemeli kod çözücü

  • Önceki bölümdeki çıkarım modeli Kodlayıcı kod çözücü önceki
Keras ile Machine Translation

sos ve eos belirteçlerinin değeri

  • sos, çevirinin başlangıcını işaretler (örn. Fransızca cümle).

    • İlk sözcük olarak kod çözücüye sos verin ve tahmin etmeye devam edin
  • eos, çevirinin sonunu işaretler.

    • Model eos sözcüğünü tahmin ettiğinde durur
  • Güvenlik için modelin tahmin edebileceği bir azami uzunluk kullanın

Keras ile Machine Translation

Üreteç kodlayıcıyı tanımlama

  • Katmanları ve Model'i içe aktarma

    # Import Keras layers
    import tensorflow.keras.layers as layers
    from tensorflow.keras.models import Model
    
  • Model katmanlarını tanımlama

    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)
    
  • Model nesnesini tanımlama

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

Üreteç kod çözücüyü tanımlama

  • Kod çözücü Input katmanlarını tanımlama
de_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
  • Kod çözücünün ara layers katmanlarını tanımlama
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)
  • Kod çözücü Modelini tanımlama
decoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
Keras ile Machine Translation

Ağırlıkları kopyalama

  • l1 katmanının ağırlıklarını alın
    • w = l1.get_weights()
  • l2 katmanının ağırlıklarını w ile ayarlayın
    • l2.set_weights(w)
  • Modelimizde ağırlıkları olan üç katman vardır
    • Kodlayıcı GRU, Kod çözücü GRU ve Kod çözücü Dense
en_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)

Şu şekilde de yazılabilir:

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

Çeviri üretme

en_sent = ['the united states is sometimes chilly during 
           december , but it is sometimes freezing in june .']
  • İngilizce cümleyi diziye çevirme
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
  • Bağlam vektörünü alma
de_s_t = encoder.predict(en_seq)
  • "sos"u (kod çözücünün ilk kelimesi) diziye çevirme
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
Keras ile Machine Translation

Çeviri üretme

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

Çeviri zamanı!

Keras ile Machine Translation

Preparing Video For Download...