Closed varisd closed 5 years ago
Ještě neprochází test, protože konfigurář bert.ini
má nepoužívané sekce.
@varisd upravil jsem ten konfigurář, aby používal všechny sekce. Pokud si myslíš, že je to dobře, tak merguj.
Nezkoušel jsem to, ale tf.where vždycky propouštělo komputaci do všech větví. tf.cond taky, ale to už možná zafixovali.
Přidal jsem test a zjistil jsem dvě věci:
neuralmonkey-run
potřebuje z nějakého důvodu random_seed
Takže navrhuju smazat celej ten tenzor output_mask
Ad output mask: ten opravdu tedka nepojede z jednoho prosteho duvodu: Ta lambda funkce, co se vola z tf.cond je spravne pouzita, ovsem ten train_inputs Placeholder se vytvari uz behem ``register_inputs''. Prekvapuje me tento design choice, protoze register_inputs registruje uplne vsechny mozne placeholdery (pro pozadovane series; definovane v ruznych objektech v konfigu) bez ohledu na to, jestli se dane series vubec nachazeji v poskytnutych datasetech.
Dalsi vec je, ze pokud dana series (jej placeholder) potrebna pouze pro trenink, nebo pouze pro vypocet nekterych casti grafu, tak by take jeji tvorba mela byt lazy (kdyz uz jste si zvolili tento design).
To neni žádnej design choice, to je provizorní věc na cestě k tf.Datasetu, kterou je tam jenom proto, aby to zatím fungovalo, než Jindra v listopadu dodělá refaktor s tf.Datasetem. Takže tady na ten debilní mechanismus bych se neohlížel, protože tam snad brzy nebude. Místo těch placeholderů tam přicestuje tf.Dataset, kterej tam prostě ten tenzor mít nebude.
Ok, nechal bych to bud on-hold do tf.Datasetu (tam uz to snad pujde i s tim tf.cond) a nebo to zamergoval s poznamkou, ze tam v budoucnu chceme mit prepinani masek
Also:
+1
smoothing to SequenceLabeler.cost due to the nature of BERT input data (everything masked in small batches -> can lead to division by zero)