ufal / neuralmonkey

An open-source tool for sequence learning in NLP built on TensorFlow.
BSD 3-Clause "New" or "Revised" License
410 stars 104 forks source link

Delayed update trainer #772

Closed jindrahelcl closed 5 years ago

jindrahelcl commented 5 years ago

I'm opening a new PR because the other one got sucked into a different branch.

jlibovicky commented 5 years ago

Ještě sem cherry-pickuj 288a277.

jindrahelcl commented 5 years ago

to jsou ty coders=self.trainer.all_coders ?

jlibovicky commented 5 years ago

Jj, to je ono. Zachraňuje to you must feed placeholder. Btw. spadnul docela divně unit test.

jindrahelcl commented 5 years ago

Ten unit test je demence, tam jsou dvě zashufflovaný sekvence deseti věcí a když se zashufflujou stejně, tak to spadne (čekal bych, že se to bude stávat míň často - mně už se to stalo potřetí)

jindrahelcl commented 5 years ago

(stačí to restartnout a projde to)

jlibovicky commented 5 years ago

Přijde mi, že by to šlo jednoduše refaktorovat tak, že by se sloučily GenericTrainer a DelayedUpdateTrainer trainer. Akumulátory gradientů a spol jsou @tensor, takže se vytvoři jenom, když se zavolají, takže by se nevyytvářely zbytečně. Situace by se lišila jenom tím, že když by vracel různé executably podle toho, jestli je delayed nebo ne.

jindrahelcl commented 5 years ago

To by mi přišlo příliš kódu v jednom modulu. Když se na to podíváš, tak ten delayed trainer od toho generic trainera dědí a moc kódu se tam neduplikuje. Executably jsou oba dva úplně jiný, Funkce summaries teď nechápu, proč je tam dvakrát. Ta v tom delayed traineru neloguje objectives a cost.