先举三个例子,你可能已经明白了。 detach (和torch.no_grad )可以获得相同的效果。 但是,前者有点麻烦,所以会给每个变量都取,但后者没有关系。
x=torch.tensor(2.requires_grad=True ) y=torch.tensor(3)3.requires_grad=True ) z=2*x*yprint requires_grad=true ) with torch.no _ grad (: z=2* x * yp rad ) ) ) ) ) requires_grad=true ) y ) requires_grad=True ) z=2 * x * y.detach ) print ) z.requires requires_grad=True ) y=torch.tensor(3.red )
detach ) )返回新的Tensor对象,并且不会出现在反向传播中。 这与复制了使原始requires_grad=True成为requires_grad=False的变量相同
torch.no_grad (通常用于在估计时禁止梯度计算,仅进行前向传播。 在训练中,就像画了一个圈一样。 来吧,在我的圈子里跑吧。 不需要计算坡度。 试着正向传播。