เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การฝึกโมเดลที่ใช้ word embedding

ในแบบฝึกหัดนี้ คุณจะได้เรียนรู้วิธีกำหนดกระบวนการฝึก (training process) สำหรับโมเดลแปลภาษาที่ใช้ word embedding โดยแต่ละคำจะถูกแทนด้วยตัวเลขเพียงตัวเดียวแทนที่จะเป็น one-hot encoded vector เหมือนในแบบฝึกหัดก่อนหน้า แล้วจะฝึกโมเดลหลาย epoch โดยวนผ่านชุดข้อมูลทั้งหมดทีละ batch

ในแบบฝึกหัดนี้ มีข้อมูลสำหรับฝึก (tr_en และ tr_fr) ในรูปแบบลิสต์ของประโยคให้พร้อมแล้ว โดยจะใช้เพียงตัวอย่างขนาดเล็ก (1,000 ประโยค) จากข้อมูลจริง เนื่องจากการใช้ข้อมูลทั้งหมดอาจใช้เวลาฝึกนานมาก นอกจากนี้ยังมีฟังก์ชัน sents2seqs() และโมเดล nmt_emb ที่สร้างไว้ในแบบฝึกหัดก่อนหน้าให้ใช้งาน ทั้งนี้ en_x หมายถึง encoder inputs และ de_x หมายถึง decoder inputs

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Translation ด้วย Keras

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ดึงข้อมูลประโยคภาษาฝรั่งเศสหนึ่ง batch โดยไม่ใช้ onehot encoding ด้วยฟังก์ชัน sents2seqs()
  • ดึงคำทั้งหมดยกเว้นคำสุดท้ายจาก de_xy
  • ดึงคำทั้งหมดยกเว้นคำแรกจาก de_xy_oh (คำภาษาฝรั่งเศสที่เข้ารหัสแบบ onehot)
  • ฝึกโมเดลโดยใช้ข้อมูลหนึ่ง batch

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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))
แก้ไขและรันโค้ด