Preprocesarea datelor
Acum trebuie să procesezi datele pentru noul nostru model, care are două intrări și o singură ieșire. Cele două intrări sunt cuvintele englezești codificate one-hot și cuvintele franceze codificate one-hot, cu excepția ultimului cuvânt.
Ieșirea va fi cuvintele franceze codificate one-hot, cu excepția primului cuvânt. Cu alte cuvinte, în decoder, fiecare cuvânt francez de intrare are o ieșire corespunzătoare – și anume cuvântul următor. Aici vei învăța cum să implementezi acest lucru.
Ți-au fost furnizate funcția sents2seqs(), en_text și fr_text.
Acest exercițiu face parte din cursul
Traducere automată cu Keras
Instrucțiuni pentru exercițiu
- Obține un lot de intrări pentru encoder (de la
ilai+bsize) folosind funcțiasents2seqs()(codificate one-hot și inversate). - Obține un lot de intrări și ieșiri pentru decoder (de la
ilai+bsize) folosind funcțiasents2seqs()(codificate one-hot). - Separă intrările decoderului (toate cuvintele franceze cu excepția ultimului) din
de_xyprin tăiere pe dimensiunea temporală. - Separă ieșirile decoderului (toate cuvintele franceze cu excepția primului) din
de_xy.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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))