Word Embedding आधारित मॉडल को ट्रेन करना
यहाँ आप ऐसे मशीन ट्रांसलेटर मॉडल के लिए training प्रक्रिया लागू करना सीखेंगे जो word embeddings का उपयोग करता है. पिछले अभ्यासों में जहाँ आपने one-hot encoded vector का उपयोग किया था, वहाँ इसके बजाय एक शब्द को एक ही संख्या से दर्शाया जाएगा. आप पूरे डेटासेट पर बैचों में traversal करते हुए मॉडल को कई epochs तक ट्रेन करेंगे.
इस अभ्यास में आपको training data (tr_en और tr_fr) वाक्यों की सूची के रूप में दिया गया है. training में बहुत समय लग सकता है, इसलिए आप वास्तविक डेटा के केवल एक बहुत छोटे सैंपल (1000 वाक्य) का ही उपयोग करेंगे. आपके पास sents2seqs() फंक्शन और nmt_emb मॉडल भी है, जिसे आपने पिछले अभ्यास में बनाया था. याद रखें कि हम encoder inputs के लिए en_x और decoder inputs के लिए de_x लिखते हैं.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Keras के साथ Machine Translation
अभ्यास निर्देश
sents2seqs()फंक्शन का उपयोग करके one-hot encoding के बिना French वाक्यों का एक single batch लें.de_xyमें से आखिरी शब्द छोड़कर बाकी सभी शब्द लें.de_xy_oh(French शब्द one-hot encoding के साथ) में से पहला शब्द छोड़कर बाकी सभी शब्द लें.- एक single batch डेटा का उपयोग करके मॉडल को train करें
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
for ei in range(3):
for i in range(0, train_size, bsize):
en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=False, reverse=True)
# Get a single batch of French sentences with no onehot encoding
de_xy = ____('target', ____[i:i+bsize], ____=____)
# Get all words except the last word in that batch
de_x = de_xy[:,____]
de_xy_oh = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
# Get all words except the first from de_xy_oh
de_y = de_xy_oh[____,____,____]
# Training the model on a single batch of data
nmt_emb.train_on_batch([____,____], ____)
res = nmt_emb.evaluate([en_x, de_x], de_y, batch_size=bsize, verbose=0)
print("{} => Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))