facebookresearch/fairseq

Why inplace operation in `AdaptiveSoftmax`

Open

#760 aberto em 28 de mai. de 2019

Ver no GitHub
 (6 comments) (1 reaction) (1 assignee)Python (6.224 forks)batch import
enhancementhelp wantedstale

Métricas do repositório

Stars
 (29.107 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

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.

Guia do colaborador