Huấn luyện mô hình dựa trên word embedding
Tại đây bạn sẽ học cách hiện thực quy trình huấn luyện cho một mô hình dịch máy sử dụng word embeddings. Mỗi từ được biểu diễn bằng một số duy nhất thay vì vector one-hot như bạn đã làm ở các bài trước. Bạn sẽ huấn luyện mô hình qua nhiều epoch, duyệt toàn bộ tập dữ liệu theo từng batch.
Trong bài này, bạn được cung cấp dữ liệu huấn luyện (tr_en và tr_fr) dưới dạng danh sách các câu. Bạn sẽ chỉ dùng một mẫu rất nhỏ (1000 câu) của dữ liệu thực tế vì nếu không thời gian huấn luyện sẽ rất lâu. Bạn cũng có hàm sents2seqs() và mô hình nmt_emb mà bạn đã xây dựng ở bài trước. Hãy nhớ rằng chúng ta dùng en_x cho đầu vào encoder và de_x cho đầu vào 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 các câu tiếng Pháp không dùng onehot encoding bằng hàm
sents2seqs(). - Lấy tất cả các từ trừ từ cuối cùng từ
de_xy. - Lấy tất cả các từ trừ từ đầu tiên từ
de_xy_oh(các từ tiếng Pháp với onehot encoding). - Huấn luyện mô hình bằng một batch dữ liệu duy nhất
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.
for ei in range(3):
for i in range(0, train_size, bsize):
en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=False, reverse=True)
# Get a single batch of French sentences with no onehot encoding
de_xy = ____('target', ____[i:i+bsize], ____=____)
# Get all words except the last word in that batch
de_x = de_xy[:,____]
de_xy_oh = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
# Get all words except the first from de_xy_oh
de_y = de_xy_oh[____,____,____]
# Training the model on a single batch of data
nmt_emb.train_on_batch([____,____], ____)
res = nmt_emb.evaluate([en_x, de_x], de_y, batch_size=bsize, verbose=0)
print("{} => Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))