facebookresearch/fairseq

Why inplace operation in `AdaptiveSoftmax`

Open

#760 opened on 2019年5月28日

GitHub で見る
 (6 comments) (1 reaction) (1 assignee)Python (6,224 forks)batch import
enhancementhelp wantedstale

Repository metrics

Stars
 (29,107 stars)
PR merge metrics
 (30d に merged PR はありません)

説明

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.

コントリビューターガイド