В чем разница между копированием тензора с использованием torch.tensor(sourcetensor)
и tensor.clone().detach()
?
Как torch.tensor(srctsr)
всегда копирует данные, tensor.clone().detach()
тоже копирует данные.
x = torch.tensor([1, 2, 3])
y1 = x.clone().detach()
y2 = torch.tensor(x)
x[0] = 0
print(y1, y2) # both are same
Так что они кажутся точно такими же. Ниже в документации PyTorch приведено объяснение torch.tensor()
и torch.clone().detach()
Следовательно, torch.tensor (x) эквивалентен x.clone (). Detach () и torch.tensor ( x, requires_grad = True) эквивалентен x.clone (). detach (). requires_grad_ (True). Рекомендуются эквиваленты с использованием clone () и detach ().
Итак, если они эквивалентны друг другу, почему .clone().detach()
предпочтительнее другого?