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 merupakan bagian dari kursus
Penerjemahan Mesin dengan Keras
Instruksi 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 langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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))