import torch
import torch.nn as nn
class model(nn.Module):
def __init__(self, b):
super(model, self).__init__()
self.b = b
def forward(self, x):
y = torch.pow(x, 2)
return y
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
b = torch.tensor([1.0, 1.0, 0.0], requires_grad=True)
model = model(b)
model.eval() # model.eval()不影响梯度的计算
# with torch.no_grad(): # with torch.no_grad()会使得y的梯度计算参数为False
y = model(x)
print(y.requires_grad)
y.backward(torch.ones_like(x)) # pytorch无法进行tensor对tensor的求导,因此此处需要添加一个参数,得到一个标量,通过标量对tensor的求导,来计算想要的结果。
print(x.grad)
model.eval()和with torch.no_grad()对梯度计算的影响
最新推荐文章于 2024-04-25 18:37:09 发布