การเทรนโมเดล
ในแบบฝึกหัดนี้ จะได้เทรนโมเดลที่สร้างไว้ก่อนหน้า รู้ไหมว่าโมเดลแปลภาษาของ 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))