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

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_textfr_text.

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 encoder inputs (từ i đến i+bsize) bằng hàm sents2seqs() (đã one-hot và đảo ngược).
  • Lấy một batch decoder inputs và outputs (từ i đến i+bsize) bằng hàm sents2seqs() (đã one-hot).
  • Tách decoder inputs (tất cả các từ tiếng Pháp trừ từ cuối) từ de_xy bằ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))
Chỉnh sửa và Chạy Mã