Melatih model dengan validasi
Di sini Anda akan melatih model menggunakan Teacher Forcing dan juga melakukan langkah validasi. Anda akan melatih model selama beberapa epoch dan beberapa iterasi. Lalu pada akhir setiap epoch, Anda akan menjalankan langkah validasi dan memperoleh hasilnya.
Untuk itu, Anda telah disediakan en_text (kalimat bahasa Inggris), fr_text (kalimat bahasa Prancis), fungsi sents2seqs() dan nmt_tf (model yang sudah dikompilasi). Anda juga sudah memiliki tr_en dan tr_fr (data pelatihan) serta v_en dan v_fr (data validasi) yang telah dimuat.
Latihan ini adalah bagian dari kursus
Penerjemahan Mesin dengan Keras
Petunjuk latihan
- Ekstrak masukan decoder (semua kata kecuali yang terakhir) dan keluaran (semua kata kecuali yang pertama) dari
de_xy. - Latih model pada satu batch data.
- Buat masukan dan keluaran decoder dari data validasi dengan cara yang sama seperti pada data pelatihan.
- Evaluasi model pada himpunan data validasi untuk memperoleh loss validasi dan akurasi.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
for ei in range(n_epochs):
for i in range(0,train_size,bsize):
en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
# Create a single batch of decoder inputs and outputs
de_x, de_y = ____[:,____,:], de_xy[:,____,:]
# Train the model on a single batch of data
nmt_tf.____([____,____], de_y)
v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
# Create a single batch of validation decoder inputs and outputs
v_de_xy = ____('target', ____, onehot=____)
v_de_x, v_de_y = ____[____], v_de_xy[____]
# Evaluate the trained model on the validation data
res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))