facebookresearch/fairseq

Why inplace operation in `AdaptiveSoftmax`

Open

#760 ouverte le 28 mai 2019

Voir sur GitHub
 (6 commentaires) (1 réaction) (1 assigné)Python (6 224 forks)batch import
enhancementhelp wantedstale

Métriques du dépôt

Stars
 (29 107 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

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.

Guide contributeur