MulaiMulai sekarang secara gratis

Prapemrosesan data

Sekarang Anda perlu memproses data untuk model baru kita yang memiliki dua masukan dan satu keluaran. Dua masukannya adalah kata-kata bahasa Inggris yang di-one-hot-encode dan kata-kata bahasa Prancis yang di-one-hot-encode tanpa kata terakhir.

Keluarnya adalah kata-kata bahasa Prancis yang di-one-hot-encode tanpa kata pertama. Dengan kata lain, pada decoder, setiap kata masukan bahasa Prancis memiliki keluaran berupa kata berikutnya. Di sini Anda akan mempelajari cara mengimplementasikannya.

Anda telah disediakan fungsi sents2seqs(), en_text, dan fr_text.

Latihan ini adalah bagian dari kursus

Penerjemahan Mesin dengan Keras

Lihat Kursus

Petunjuk latihan

  • Dapatkan satu batch masukan encoder (dari i hingga i+bsize) menggunakan fungsi sents2seqs() (one-hot encode dan dibalik).
  • Dapatkan satu batch masukan dan keluaran decoder (dari i hingga i+bsize) menggunakan fungsi sents2seqs() (one-hot encode).
  • Pisahkan masukan decoder (semua kata bahasa Prancis kecuali yang terakhir) dari de_xy dengan melakukan slicing pada dimensi waktu.
  • Pisahkan keluaran decoder (semua kata bahasa Prancis kecuali yang pertama) dari de_xy.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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))
Edit dan Jalankan Kode