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
Petunjuk latihan
- Dapatkan satu batch masukan encoder (dari
ihinggai+bsize) menggunakan fungsisents2seqs()(one-hot encode dan dibalik). - Dapatkan satu batch masukan dan keluaran decoder (dari
ihinggai+bsize) menggunakan fungsisents2seqs()(one-hot encode). - Pisahkan masukan decoder (semua kata bahasa Prancis kecuali yang terakhir) dari
de_xydengan 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))