(一)detach
import torch
a = torch.tensor([1, 2, 3.], requires_grad=True)
out = a.sigmoid()
c = out.detach()
1.c和out指向同一个内存,但是c将requires_grad变为False。
2.当c改变时,求 out对a 的梯度会报错,因为out的值也变了,找不到反向传播的路径;反之,当c没有改变时,则可以正常求 out对a 的梯度。
3.求c对a的梯度也会报错。
(一)detach
import torch
a = torch.tensor([1, 2, 3.], requires_grad=True)
out = a.sigmoid()
c = out.detach()
1.c和out指向同一个内存,但是c将requires_grad变为False。
2.当c改变时,求 out对a 的梯度会报错,因为out的值也变了,找不到反向传播的路径;反之,当c没有改变时,则可以正常求 out对a 的梯度。
3.求c对a的梯度也会报错。