clone()和detach()的区别
我认为两者之间的区别主要在:在反向传播的时候,clone()是把变量赋值过去,而detach()则把确切的值赋值过去。
import torch
a=torch.tensor(1.0,requires_grad = True)
b=a.clone()
c=a.detach()
d=a**4+c
d.backward()
print('a:'+str(a.grad))
print('b:'+str(b))
print('c:'+str(c))
print('d:'+str(d))
‘得到结果:
a:tensor(4.)
b:tensor(1., grad_fn=<CloneBackward>)
c:tensor(1.)
d:tensor(2., grad_fn=<AddBackward0>)
’