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

การเทรนโมเดล

ในแบบฝึกหัดนี้ จะได้เทรนโมเดลที่สร้างไว้ก่อนหน้า รู้ไหมว่าโมเดลแปลภาษาของ Google ที่ใช้สถาปัตยกรรม encoder-decoder ต้องใช้เวลาเทรนถึง 2-4 วัน?

สำหรับแบบฝึกหัดนี้ จะใช้ชุดข้อมูลขนาดเล็กที่มี 1,500 ประโยค (ได้แก่ en_text และ fr_text) ในการเทรนโมเดล ข้อมูลจำนวนนี้อาจไม่เพียงพอที่จะให้ผลลัพธ์ที่ดีนัก แต่กระบวนการทำงานจะเหมือนกัน เพียงแค่ต้องเทรนด้วยข้อมูลมากขึ้นและนานขึ้นเท่านั้น นอกจากนี้ยังมีโมเดล nmt และฟังก์ชัน sents2seqs() ที่สร้างไว้แล้วให้พร้อมใช้งาน ในแบบฝึกหัดนี้จะทำการ reverse ข้อความของ encoder เพื่อให้ได้ประสิทธิภาพที่ดีขึ้น โดย en_x หมายถึง input ของ encoder และ de_x หมายถึง input ของ decoder

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

Machine Translation ด้วย Keras

ดูคอร์ส

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

  • ดึงข้อมูล 1 batch ของ encoder inputs (ประโยคภาษาอังกฤษตั้งแต่ index i ถึง i+bsize) โดยใช้ฟังก์ชัน sents2seqs() โดย input ต้องผ่านการ reverse และ onehot encode
  • ดึงข้อมูล 1 batch ของ decoder outputs (ประโยคภาษาฝรั่งเศสตั้งแต่ index i ถึง i+bsize) โดยใช้ฟังก์ชัน sents2seqs() โดย input ต้องผ่านการ onehot encode
  • เทรนโมเดลด้วยข้อมูล 1 batch ที่ประกอบด้วย en_x และ de_y
  • คำนวณค่า evaluation metrics สำหรับ en_x และ de_y โดยประเมินโมเดลด้วย batch_size ที่มีค่าเท่ากับ bsize

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

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

n_epochs, bsize = 3, 250

for ei in range(n_epochs):
  for i in range(0,data_size,bsize):
    # Get a single batch of encoder inputs
    en_x = ____('source', ____, onehot=____, reverse=____)
    # Get a single batch of decoder outputs
    de_y = sents2seqs('target', fr_text[____], onehot=____)
    
    # Train the model on a single batch of data
    nmt.____(____, ____)    
    # Obtain the eval metrics for the training data
    res = nmt.____(____, de_y, batch_size=____, verbose=0)
    print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))  
แก้ไขและรันโค้ด