Melatih model dengan validasi
Di sini Anda akan mempelajari cara melatih model neural machine translator dengan langkah validasi.
Anda disediakan model nmt yang Anda buat pada bab sebelumnya. Selain itu, Anda akan melatih model pada kalimat bahasa Inggris dan Prancis yang diperoleh dari Udacity Github Repo. Anda telah disediakan teks pelatihan bahasa Inggris (tr_en) dan Prancis (tf_fr) serta teks validasi bahasa Inggris (v_en) dan Prancis (v_fr) dari latihan sebelumnya.
Melatih model membutuhkan sedikit waktu, jadi kode Anda akan berjalan sedikit lebih lama.
Latihan ini adalah bagian dari kursus
Penerjemahan Mesin dengan Keras
Petunjuk latihan
- Buat data validasi dengan mentransformasikan
v_endanv_frmenggunakan fungsisents2seqs. - Dapatkan satu batch masukan dan keluaran yang sudah ditransformasikan dengan benar menggunakan fungsi
sents2seqs. - Gunakan masukan (
en_x) dan keluaran (de_y) untuk melatihnmtpada satu batch. - Gunakan
v_en_xdanv_de_ydenganvalid_sizesebagaibatch_sizeuntuk mengevaluasi modelnmtdan memperoleh akurasi validasi.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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))