Förbearbeta data
Nu behöver du förbearbeta data för vår nya modell, som har två indata och ett enda resultat. De två indatan är one-hot-kodade engelska ord och one-hot-kodade franska ord exklusive det sista ordet.
Resultatet är de one-hot-kodade franska orden exklusive det första ordet. Med andra ord har varje franskt indataord i decodern ett resultat, nämligen nästa ord. Här lär du dig hur det implementeras.
Du har tillgång till funktionen sents2seqs(), samt en_text och fr_text.
Den här övningen är en del av kursen
Maskinöversättning med Keras
Övningsinstruktioner
- Hämta en batch med encoderindata (från
itilli+bsize) med funktionensents2seqs()(one-hot-kodad och omvänd). - Hämta en batch med decoderindata och decoderresultat (från
itilli+bsize) med funktionensents2seqs()(one-hot-kodad). - Separera decoderindata (alla franska ord utom det sista) från
de_xygenom att skära längs tidsdimensionen. - Separera decoderresultaten (alla franska ord utom det första) från
de_xy.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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))