一. requires_grad 属性:查看是否记录梯度
x = torch.rand(3, 3) # 直接创建的tensor变量默认是没有梯度的
x.requires_grad
结果如下:
False
二. requires_grad_ ()函数:调用函数设置记录梯度与否
函数:requires_grad_(requires_grad=True)
x = torch.tensor([1., 2., 3.])
print('x_base: ', x.requires_grad) # 正常状态:False
x.requires_grad_(False) #False
print('x.requires_grad_(False): ', x.requires_grad) #False
x.requires_grad_(True) # 等价:requires_grad_() #True
print('x.requires_grad_(True): ', x.requires_grad) #True
结果如下:
x_base: False
x.requires_grad_(False): False
x.requires_grad_(True): True
三. requires_grad属性参数,创建tensor时设置是否记录梯度
x = torch.tensor([1., 2., 3.], requires_grad=True) #True
print('x_base: ', x.requires_grad) # 正常状态
结果如下:
x_base: True
四. 查看模型的权重名称和参数值
[name for name, param in model.named_parameters()] #查看模型的权重名称
[param for name, param in model.named_parameters()] #查看模型的权重值
五. 查看模型权重梯度值
网络结构如下:
文章来源:https://www.toymoban.com/news/detail-437516.html
class Simple(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(3, 16, 3, 1, padding=1, bias=False)
self.conv2 = nn.Conv2d(16, 32, 3, 1, padding=1, bias=False)
self.linear = nn.Linear(32*10*10, 20, bias=False)
def forward(self, x):
x = self.conv1(x)
x = self.conv2(x)
x = self.linear(x.view(x.size(0), -1))
return x
model = Simple()
查看模型权重梯度值:文章来源地址https://www.toymoban.com/news/detail-437516.html
print(model.conv1.weight.grad)
到了这里,关于Pytorch查看tensor是否有梯度(值)以及开启梯度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!