मॉडल से अनुवाद जनरेट करना

Keras के साथ Machine Translation

Thushan Ganegedara

Data Scientist and Author

पुराना मॉडल बनाम नया मॉडल

एन्कोडर-डीकोडर रिपीट वेक्टर

एन्कोडर-डीकोडर: कौन-सा इनपुट

Keras के साथ Machine Translation

प्रशिक्षित मॉडल

टीचर फोर्सिंग से प्रशिक्षित मॉडल

Keras के साथ Machine Translation

इन्फरेंस मॉडल का डीकोडर

  • इनपुट लेता है

    • वन-हॉट एन्कोडेड शब्द
    • स्टेट इनपुट (पिछले टाइमस्टेप का स्टेट)
  • आउटपुट देता है

    • नया स्टेट
    • एक प्रेडिक्शन (यानी एक शब्द)
  • भविष्यवाणी किए शब्द और स्टेट को मॉडल में दोबारा इनपुट के रूप में दें

Keras के साथ Machine Translation

फुल इन्फरेंस मॉडल

  • रिकर्सिव डीकोडर वाला इन्फरेंस मॉडल

एन्कोडर रिकर्सिव डीकोडर

  • पिछले चैप्टर का इन्फरेंस मॉडल एन्कोडर-डीकोडर पूर्व
Keras के साथ Machine Translation

`sos` और `eos` टोकन का महत्व

  • sos अनुवाद की शुरुआत को चिन्हित करता है (यानी फ्रेंच वाक्य).

    • sos को डीकोडर का पहला शब्द बनाकर लगातार प्रेडिक्ट करें
  • eos अनुवाद के अंत को दर्शाता है.

    • जब मॉडल eos प्रेडिक्ट करे तो प्रेडिक्शन रुकें
  • सुरक्षा के लिए अधिकतम आउटपुट लंबाई तय करें

Keras के साथ Machine Translation

जेनरेटर एन्कोडर परिभाषित करना

  • लेयर्स और Model इम्पोर्ट करना

    # Import Keras layers
    import tensorflow.keras.layers as layers
    from tensorflow.keras.models import Model
    
  • मॉडल लेयर्स परिभाषित करना

    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 ऑब्जेक्ट परिभाषित करना

    encoder = Model(inputs=en_inputs, outputs=en_state)
    
Keras के साथ Machine Translation

जेनरेटर डीकोडर परिभाषित करना

  • डीकोडर के Input लेयर्स परिभाषित करना
de_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
  • डीकोडर के इंटरिम layers परिभाषित करना
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)
  • डीकोडर Model परिभाषित करना
decoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
Keras के साथ Machine Translation

वेट्स कॉपी करना

  • लेयर l1 के वेट्स लें
    • w = l1.get_weights()
  • लेयर l2 के वेट्स w से सेट करें
    • l2.set_weights(w)
  • हमारे मॉडल में तीन लेयर्स के वेट्स कॉपी होंगे
    • Encoder GRU, Decoder GRU और Decoder Dense
en_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)

इसे ऐसे भी लिख सकते हैं,

en_gru.set_weights(tr_en_gru.get_weights())
Keras के साथ Machine Translation

अनुवाद जनरेट करना

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)
  • "sos" (डीकोडर का शुरुआती शब्द) को सीक्वेंस में बदलना
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
Keras के साथ Machine Translation

अनुवाद जनरेट करना

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 के साथ Machine Translation

अब अनुवाद करें!

Keras के साथ Machine Translation

Preparing Video For Download...