Bắt đầu ngayBắt đầu miễn phí

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_entr_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

Xem khóa học

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))
Chỉnh sửa và Chạy Mã