tgoop.com/quant_prune_distill/166
Last Update:
Ответ на задачку и обьяснение (за спойлером):
Почему так?
Выражение x = [torch.empty(size=(1,))] * 2 создает один обьект в памяти, на который продублированы ссылаются x[0], x[1].
В случае 1) обращение происходит по имени, и x[0] теперь ссылается на обьект tensor([0]) и x[1] на обьект tensor([1]).
В случае 2) обращение происходит по ссылке, и сначала обьект, на который ссылаются как x[0] и x[1] записывается значение tensor([0]), а затем tensor([1]).
Как ваш покорный слуга сам напоролся на сий вроде бы очевидный, но заковыристый нюанс?
Когда работал с torch.distributed.gather заполнял тензоры на разных процессах (которые вообще говоря должны были генерировать разные значения), чтобы собрать затем на главном потоке. Какого же было мое удивление, когда увидел копии одного и того же тензора в полученном списке:)
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/166