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

การเตรียมข้อมูล

ขั้นตอนต่อไปคือการเตรียมข้อมูลสำหรับโมเดลใหม่ที่มี input สองชุดและ output หนึ่งชุด input ทั้งสองได้แก่ คำภาษาอังกฤษที่เข้ารหัสแบบ one-hot และคำภาษาฝรั่งเศสที่เข้ารหัสแบบ one-hot โดยตัดคำสุดท้ายออก

ส่วน output คือคำภาษาฝรั่งเศสที่เข้ารหัสแบบ one-hot โดยตัดคำแรกออก กล่าวคือ ใน decoder คำภาษาฝรั่งเศสแต่ละคำที่เป็น input จะมี output เป็นคำถัดไป แบบฝึกหัดนี้จะช่วยให้เข้าใจวิธีนำไปใช้งาน

มีฟังก์ชัน sents2seqs(), en_text และ fr_text เตรียมไว้ให้แล้ว

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

Machine Translation ด้วย Keras

ดูคอร์ส

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

  • สร้าง encoder inputs หนึ่ง batch (ตั้งแต่ i ถึง i+bsize) โดยใช้ฟังก์ชัน sents2seqs() (เข้ารหัสแบบ one-hot และกลับลำดับ)
  • สร้าง decoder inputs และ outputs หนึ่ง batch (ตั้งแต่ i ถึง i+bsize) โดยใช้ฟังก์ชัน sents2seqs() (เข้ารหัสแบบ one-hot)
  • แยก decoder inputs (คำภาษาฝรั่งเศสทั้งหมดยกเว้นคำสุดท้าย) จาก de_xy โดย slicing บน time dimension
  • แยก decoder outputs (คำภาษาฝรั่งเศสทั้งหมดยกเว้นคำแรก) จาก de_xy

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

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

bsize = 250
for i in range(0, len(en_text), bsize):
  # Get the encoder inputs using the sents2seqs() function
  en_x = ____('source', ____[____:____], onehot=True, reverse=____)
  # Get the decoder inputs/outputs using the sents2seqs() function
  de_xy = sents2seqs('target', ____[____:____], onehot=True)
  # Separate the decoder inputs from de_xy
  de_x = de_xy[:,____,:]
  # Separate the decoder outputs from de_xy
  de_y = de_xy[:,____,:]
  
  print("Data from ", i, " to ", i+bsize)
  print("\tnp.argmax() => en_x[0]: ", np.argmax(en_x[0], axis=-1))
  print("\tnp.argmax() => de_x[0]: ", np.argmax(de_x[0], axis=-1))
  print("\tnp.argmax() => de_y[0]: ", np.argmax(de_y[0], axis=-1))
แก้ไขและรันโค้ด