facebookresearch/fairseq

Why inplace operation in `AdaptiveSoftmax`

Open

#760 aperta il 28 mag 2019

Vedi su GitHub
 (6 commenti) (1 reazione) (1 assegnatario)Python (6224 fork)batch import
enhancementhelp wantedstale

Metriche repository

Star
 (29.107 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

I used log_output for training purpose, but pytorch complains about inplace operation on backward.

For lines 204 and 205: https://github.com/pytorch/fairseq/blob/e6422528dae0b899848469efe2dc404c1e639ce9/fairseq/modules/adaptive_softmax.py#L200-L208

  1. why doing a copy_ on tailout
  2. why inplace add_

I changed to

tail_output = ...
... = self.lsm(tail_out) + tail_priors[idxs, i, None]

And it works for training.

Guida contributor