在PyTorch中,反向传播是依靠.backward()实现的。
关于自动求导的属性设置:可以通过设置.requires_grad=Ture来执行自动求导,通过代码块的限制来停止自动求导。
也可以通过.detach()获得一个新的Tensor,拥有相同的内容但不需要自动求导。
import torch
x = torch.ones(2, 2, requires_grad=True)
y = x + 1
z = y * y * 3
print(z)
out = z.mean()
out.backward()
print(x.grad)
print(x.requires_grad)
print((x ** 2).requires_grad)
# 将放到这里不进行求导
with torch.no_grad():
print((x ** 2).requires_grad)
print("-----")
y=x.detach()
print(y.requires_grad)
print(x)
print(y)
print(x.__eq__(y).all())
浙公网安备 33010602011771号