Tiền xử lý dữ liệu
Giờ bạn cần xử lý dữ liệu cho mô hình mới với hai đầu vào và một đầu ra. Hai đầu vào là các từ tiếng Anh đã one-hot và các từ tiếng Pháp đã one-hot nhưng bỏ từ cuối.
Đầu ra sẽ là các từ tiếng Pháp đã one-hot nhưng bỏ từ đầu. Nói cách khác, trong decoder, mỗi từ tiếng Pháp ở đầu vào sẽ có một đầu ra là từ kế tiếp. Ở đây bạn sẽ học cách hiện thực điều đó.
Bạn đã được cung cấp hàm sents2seqs(), en_text và fr_text.
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 encoder inputs (từ
iđếni+bsize) bằng hàmsents2seqs()(đã one-hot và đảo ngược). - Lấy một batch decoder inputs và outputs (từ
iđếni+bsize) bằng hàmsents2seqs()(đã one-hot). - Tách decoder inputs (tất cả các từ tiếng Pháp trừ từ cuối) từ
de_xybằng cách cắt theo trục thời gian. - Tách decoder outputs (tất cả các từ tiếng Pháp trừ từ đầu) từ
de_xy.
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.
bsize = 250
for i in range(0, len(en_text), bsize):
# Get the encoder inputs using the sents2seqs() function
en_x = ____('source', ____[____:____], onehot=True, reverse=____)
# Get the decoder inputs/outputs using the sents2seqs() function
de_xy = sents2seqs('target', ____[____:____], onehot=True)
# Separate the decoder inputs from de_xy
de_x = de_xy[:,____,:]
# Separate the decoder outputs from de_xy
de_y = de_xy[:,____,:]
print("Data from ", i, " to ", i+bsize)
print("\tnp.argmax() => en_x[0]: ", np.argmax(en_x[0], axis=-1))
print("\tnp.argmax() => de_x[0]: ", np.argmax(de_x[0], axis=-1))
print("\tnp.argmax() => de_y[0]: ", np.argmax(de_y[0], axis=-1))