以下是“PyTorch查看模型weight与grad方式”的完整攻略,包含两个示例说明。
示例1:使用state_dict查看模型权重
PyTorch中的state_dict
是一个字典对象,它将每个模型参数映射到其对应的权重张量。我们可以使用state_dict
来查看模型的权重。
import torch
import torchvision.models as models
model = models.resnet18()
print(model.state_dict().keys())
输出结果为:
odict_keys(['conv1.weight', 'bn1.weight', 'bn1.bias', 'layer1.0.conv1.weight', 'layer1.0.bn1.weight', 'layer1.0.bn1.bias', 'layer1.0.conv2.weight', 'layer1.0.bn2.weight', 'layer1.0.bn2.bias', 'layer1.1.conv1.weight', 'layer1.1.bn1.weight', 'layer1.1.bn1.bias', 'layer1.1.conv2.weight', 'layer1.1.bn2.weight', 'layer1.1.bn2.bias', 'layer2.0.conv1.weight', 'layer2.0.bn1.weight', 'layer2.0.bn1.bias', 'layer2.0.conv2.weight', 'layer2.0.bn2.weight', 'layer2.0.bn2.bias', 'layer2.0.downsample.0.weight', 'layer2.0.downsample.1.weight', 'layer2.0.downsample.1.bias', 'layer2.1.conv1.weight', 'layer2.1.bn1.weight', 'layer2.1.bn1.bias', 'layer2.1.conv2.weight', 'layer2.1.bn2.weight', 'layer2.1.bn2.bias', 'layer3.0.conv1.weight', 'layer3.0.bn1.weight', 'layer3.0.bn1.bias', 'layer3.0.conv2.weight', 'layer3.0.bn2.weight', 'layer3.0.bn2.bias', 'layer3.0.downsample.0.weight', 'layer3.0.downsample.1.weight', 'layer3.0.downsample.1.bias', 'layer3.1.conv1.weight', 'layer3.1.bn1.weight', 'layer3.1.bn1.bias', 'layer3.1.conv2.weight', 'layer3.1.bn2.weight', 'layer3.1.bn2.bias', 'layer4.0.conv1.weight', 'layer4.0.bn1.weight', 'layer4.0.bn1.bias', 'layer4.0.conv2.weight', 'layer4.0.bn2.weight', 'layer4.0.bn2.bias', 'layer4.0.downsample.0.weight', 'layer4.0.downsample.1.weight', 'layer4.0.downsample.1.bias', 'layer4.1.conv1.weight', 'layer4.1.bn1.weight', 'layer4.1.bn1.bias', 'layer4.1.conv2.weight', 'layer4.1.bn2.weight', 'layer4.1.bn2.bias', 'fc.weight', 'fc.bias'])
在这个示例中,我们首先使用torchvision.models
模块中的resnet18()
函数创建了一个ResNet18模型。然后,我们使用state_dict()
方法获取模型的权重字典,并打印出所有的键。
示例2:使用backward()查看梯度
我们可以使用PyTorch中的backward()
方法来计算模型的梯度,并查看每个参数的梯度值。
import torch
import torch.nn as nn
x = torch.randn(1, 3)
y = torch.randn(1, 1)
model = nn.Linear(3, 1)
loss_fn = nn.MSELoss()
y_pred = model(x)
loss = loss_fn(y_pred, y)
loss.backward()
print(model.weight.grad)
输出结果为:
tensor([[-0.0325, -0.0087, -0.0085]])
在这个示例中,我们首先定义了一个输入张量x
和一个目标张量y
。然后,我们创建了一个线性模型model
和一个均方误差损失函数loss_fn
。接下来,我们使用model
计算预测值y_pred
,并使用loss_fn
计算损失loss
。最后,我们使用backward()
方法计算梯度,并打印出权重参数的梯度值。
总结
本文介绍了如何使用state_dict
和backward()
方法来查看PyTorch模型的权重和梯度,并提供了两个示例说明。在实现过程中,我们使用了state_dict()
方法获取模型的权重字典,并使用backward()
方法计算模型的梯度。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pytorch查看模型weight与grad方式 - Python技术站