ฝึกโมเดลพร้อมขั้นตอนการตรวจสอบความถูกต้อง
ในแบบฝึกหัดนี้ คุณจะได้เรียนรู้วิธีฝึกโมเดลแปลภาษาด้วยโครงข่ายประสาทเทียม พร้อมขั้นตอนการตรวจสอบความถูกต้อง (validation)
โมเดล nmt ที่สร้างไว้ในบทก่อนหน้าถูกเตรียมไว้ให้แล้ว คุณจะฝึกโมเดลนี้บนประโยคภาษาอังกฤษและภาษาฝรั่งเศสที่ได้จาก Udacity Github Repo โดยมีข้อความภาษาอังกฤษสำหรับฝึก (tr_en) และภาษาฝรั่งเศส (tf_fr) รวมถึงข้อความสำหรับตรวจสอบ (v_en) และ (v_fr) จากแบบฝึกหัดก่อนหน้า
การฝึกโมเดลใช้เวลาพอสมควร โค้ดอาจใช้เวลารันนานกว่าปกติเล็กน้อย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- สร้างข้อมูล validation โดยแปลง
v_enและv_frด้วยฟังก์ชันsents2seqs - แปลง batch ของ inputs และ outputs ให้อยู่ในรูปแบบที่ถูกต้องโดยใช้ฟังก์ชัน
sents2seqs - ใช้ inputs (
en_x) และ outputs (de_y) เพื่อฝึกโมเดลnmtบน batch เดียว - ใช้
v_en_xและv_de_yพร้อมกับvalid_sizeเป็นbatch_sizeเพื่อประเมินโมเดลnmtและดูค่าความแม่นยำของ validation
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Convert validation data to onehot
v_en_x = ____(____, ____, onehot=____, reverse=____)
v_de_y = ____(____, ____, onehot=True)
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,train_size,bsize):
# Get a single batch of inputs and outputs
en_x = ____(____, tr_en[____:____], onehot=____, reverse=____)
de_y = sents2seqs(____, tr_fr[____:____], onehot=True)
# Train the model on a single batch of data
nmt.____(____, ____)
# Evaluate the trained model on the validation data
res = nmt.evaluate(____, ____, batch_size=valid_size, verbose=0)
print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))