Huấn luyện mô hình với tập xác thực
Ở đây bạn sẽ huấn luyện mô hình bằng Teacher Forcing và thực hiện thêm bước xác thực. Bạn sẽ huấn luyện mô hình qua nhiều epoch và nhiều vòng lặp. Sau đó, ở cuối mỗi epoch, bạn sẽ chạy bước xác thực và lấy kết quả.
Vì mục đích này, bạn được cung cấp en_text (các câu tiếng Anh), fr_text (các câu tiếng Pháp), hàm sents2seqs() và nmt_tf (mô hình đã compile). Bạn cũng đã có sẵn tr_en và tr_fr (dữ liệu huấn luyện) cùng v_en và v_fr (dữ liệu xác thực).
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
- Trích xuất đầu vào decoder (tất cả các từ trừ từ cuối) và đầu ra (tất cả các từ trừ từ đầu) từ
de_xy. - Huấn luyện mô hình trên một batch dữ liệu.
- Tạo đầu vào và đầu ra cho decoder từ dữ liệu xác thực tương tự như cách bạn đã làm với dữ liệu huấn luyện.
- Đánh giá mô hình trên tập xác thực để thu được loss xác thực và độ chính xác.
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(n_epochs):
for i in range(0,train_size,bsize):
en_x = sents2seqs('source', tr_en[i:i+bsize], onehot=True, reverse=True)
de_xy = sents2seqs('target', tr_fr[i:i+bsize], onehot=True)
# Create a single batch of decoder inputs and outputs
de_x, de_y = ____[:,____,:], de_xy[:,____,:]
# Train the model on a single batch of data
nmt_tf.____([____,____], de_y)
v_en_x = sents2seqs('source', v_en, onehot=True, reverse=True)
# Create a single batch of validation decoder inputs and outputs
v_de_xy = ____('target', ____, onehot=____)
v_de_x, v_de_y = ____[____], v_de_xy[____]
# Evaluate the trained model on the validation data
res = nmt_tf.evaluate([____,____], ____, batch_size=valid_size, verbose=0)
print("{} => Loss:{}, Val Acc: {}".format(ei+1,res[0], res[1]*100.0))