MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Ambil satu batch masukan encoder (kalimat bahasa Inggris dari indeks i hingga i+bsize) menggunakan fungsi sents2seqs(). Masukan perlu dibalik dan di-one-hot-encode.
  • Ambil satu batch keluaran decoder (kalimat bahasa Prancis dari indeks i hingga i+bsize) menggunakan fungsi sents2seqs(). Masukan perlu di-one-hot-encode.
  • Latih model pada satu batch data yang berisi en_x dan de_y.
  • Peroleh metrik evaluasi untuk en_x dan de_y dengan mengevaluasi model menggunakan batch_size sebesar bsize.

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))  
Edit dan Jalankan Kode