Huấn luyện mô hình
Trong bài này, bạn sẽ huấn luyện mô hình đã triển khai trước đó. Bạn có biết mô hình dịch máy dạng encoder–decoder của Google mất 2–4 ngày để huấn luyện không?
Ở bài này, bạn sẽ dùng một tập dữ liệu nhỏ gồm 1500 câu (tức en_text và fr_text) để huấn luyện mô hình. Lượng dữ liệu này khó có thể cho hiệu quả tốt, nhưng phương pháp thì không đổi. Vấn đề chỉ là huấn luyện lâu hơn trên nhiều dữ liệu hơn. Bạn cũng đã được cung cấp mô hình nmt và hàm sents2seqs() mà bạn đã hiện thực trước đó. Bạn sẽ đảo ngược văn bản đầu vào của encoder để đạt hiệu năng tốt hơn trong bài này. Ở đây, en_x là đầu vào của encoder, còn de_x là đầu vào của decoder.
Bài tập này là một phần của khóa học
Machine Translation với Keras
Hướng dẫn bài tập
- Lấy một batch duy nhất cho đầu vào encoder (các câu tiếng Anh từ chỉ số
iđếni+bsize) bằng hàmsents2seqs(). Đầu vào cần được đảo ngược và onehot-encode. - Lấy một batch duy nhất cho đầu ra decoder (các câu tiếng Pháp từ chỉ số
iđếni+bsize) bằng hàmsents2seqs(). Đầu vào cần được onehot-encode. - Huấn luyện mô hình trên một batch dữ liệu duy nhất gồm
en_xvàde_y. - Lấy các chỉ số đánh giá cho
en_xvàde_ybằng cách đánh giá mô hình vớibatch_sizebằngbsize.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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))