Melatih model
Anda akan melatih model yang telah diimplementasikan sebelumnya dalam latihan ini. Tahukah Anda bahwa model machine translation berbasis encoder–decoder milik Google memerlukan waktu 2–4 hari untuk dilatih?
Untuk latihan ini Anda akan menggunakan himpunan data kecil berisi 1500 kalimat (yaitu en_text dan fr_text) untuk melatih model. Jumlah ini hampir tidak cukup untuk melihat kinerja yang baik, tetapi metodenya tetap sama. Kuncinya adalah melatih pada lebih banyak data untuk waktu yang lebih lama. Anda juga telah disediakan model nmt, dan fungsi sents2seqs() yang Anda implementasikan sebelumnya. Anda akan membalik teks encoder untuk mendapatkan kinerja yang lebih baik dalam latihan ini. Di sini, en_x mengacu pada masukan encoder, sedangkan de_x mengacu pada masukan decoder.
Latihan ini adalah bagian dari kursus
Penerjemahan Mesin dengan Keras
Petunjuk latihan
- Ambil satu batch masukan encoder (kalimat bahasa Inggris dari indeks
ihinggai+bsize) menggunakan fungsisents2seqs(). Masukan perlu dibalik dan di-one-hot-encode. - Ambil satu batch keluaran decoder (kalimat bahasa Prancis dari indeks
ihinggai+bsize) menggunakan fungsisents2seqs(). Masukan perlu di-one-hot-encode. - Latih model pada satu batch data yang berisi
en_xdande_y. - Peroleh metrik evaluasi untuk
en_xdande_ydengan mengevaluasi model menggunakanbatch_sizesebesarbsize.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,data_size,bsize):
# Get a single batch of encoder inputs
en_x = ____('source', ____, onehot=____, reverse=____)
# Get a single batch of decoder outputs
de_y = sents2seqs('target', fr_text[____], onehot=____)
# Train the model on a single batch of data
nmt.____(____, ____)
# Obtain the eval metrics for the training data
res = nmt.____(____, de_y, batch_size=____, verbose=0)
print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))