Trénování modelu
V tomto cvičení natrénuješ dříve implementovaný model. Věděl/a jsi, že Googlu trval trénink jeho modelu strojového překladu založeného na architektuře enkodér-dekodér 2 až 4 dny?
Pro toto cvičení použiješ malou datovou sadu 1 500 vět (tj. en_text a fr_text). Takové množství dat nestačí na dosažení výborných výsledků, ale postup zůstává stejný – jde jen o trénování na více datech po delší dobu. K dispozici máš také model nmt a funkci sents2seqs(), kterou jsi implementoval/a dříve. Pro lepší výkon budeš v tomto cvičení obracet vstupní text enkodéru. Zde en_x označuje vstup enkodéru, zatímco de_x označuje vstup dekodéru.
Toto cvičení je součástí kurzu
Machine Translation with Keras
Pokyny k cvičení
- Pomocí funkce
sents2seqs()získej jednu dávku vstupů enkodéru (anglické věty od indexuidoi+bsize). Vstupy musí být obrácené a zakódované metodou onehot. - Pomocí funkce
sents2seqs()získej jednu dávku výstupů dekodéru (francouzské věty od indexuidoi+bsize). Vstupy musí být zakódované metodou onehot. - Natrénuj model na jedné dávce dat obsahující
en_xade_y. - Vyhodnoť model pro
en_xade_ys hodnotoubatch_sizenastavenou nabsizea získej výsledné metriky.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
n_epochs, bsize = 3, 250
for ei in range(n_epochs):
for i in range(0,data_size,bsize):
# Get a single batch of encoder inputs
en_x = ____('source', ____, onehot=____, reverse=____)
# Get a single batch of decoder outputs
de_y = sents2seqs('target', fr_text[____], onehot=____)
# Train the model on a single batch of data
nmt.____(____, ____)
# Obtain the eval metrics for the training data
res = nmt.____(____, de_y, batch_size=____, verbose=0)
print("{} => Train Loss:{}, Train Acc: {}".format(ei+1,res[0], res[1]*100.0))