การแบ่งข้อมูลเป็นชุดฝึกและชุดตรวจสอบ
การใช้เฉพาะข้อมูลฝึก (training data) โดยไม่มีชุดข้อมูลตรวจสอบ (validation dataset) อาจนำไปสู่ปัญหาที่เรียกว่า overfitting เมื่อเกิด overfitting โมเดลจะทำนายข้อมูลใน training set ได้ดีมาก แต่กลับทำได้แย่มากกับข้อมูลที่ไม่เคยเห็นมาก่อน ซึ่งหมายความว่าโมเดลนั้นไม่มีประโยชน์เท่าที่ควร เนื่องจากไม่สามารถ generalize ได้ วิธีหนึ่งที่ช่วยแก้ปัญหานี้คือการใช้ชุดข้อมูลตรวจสอบ
ในแบบฝึกหัดนี้ คุณจะสร้างชุดข้อมูลฝึกและชุดข้อมูลตรวจสอบจากชุดข้อมูลที่มีอยู่ (ได้แก่ en_text ที่มีประโยคภาษาอังกฤษ 1,000 ประโยค และ fr_text ที่มีประโยคภาษาฝรั่งเศส 1,000 ประโยค) โดยใช้ 80% ของชุดข้อมูลเป็น training data และอีก 20% เป็น validation data
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- กำหนดลำดับของ index โดยใช้
np.arange()ที่เริ่มต้นจาก 0 และมีขนาดเท่ากับen_text - กำหนด
valid_indsเป็น index สุดท้ายจำนวนvalid_sizeตัวจากลำดับ index ที่สร้างไว้ - กำหนด
tr_enและtf_frซึ่งเก็บประโยคที่ตำแหน่ง index ในtrain_indsจาก listen_textและfr_textตามลำดับ - กำหนด
v_enและv_frซึ่งเก็บประโยคที่ตำแหน่ง index ในvalid_indsจาก listen_textและfr_textตามลำดับ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
train_size, valid_size = 800, 200
# Define a sequence of indices from 0 to len(en_text)
inds = ____.____(len(_____))
np.random.shuffle(inds)
train_inds = inds[:train_size]
# Define valid_inds: last valid_size indices
valid_inds = inds[____]
# Define tr_en (train EN sentences) and tr_fr (train FR sentences)
tr_en = [en_text[____] for ti in ____]
tr_fr = [____ for ti in ____]
# Define v_en (valid EN sentences) and v_fr (valid FR sentences)
v_en = [____ for vi in valid_inds]
v_fr = [____ for vi in ____]
print('Training (EN):\n', tr_en[:3], '\nTraining (FR):\n', tr_fr[:3])
print('\nValid (EN):\n', v_en[:3], '\nValid (FR):\n', v_fr[:3])