使用torch.utils.load()从文件中加载已保存的PyTorch模型
发布时间:2024-01-02 20:42:34
torch.utils.load()是PyTorch中一个用于加载已保存模型的函数。它接受一个文件路径参数以及可选的device参数,并返回一个包含加载模型的Python对象。
使用torch.save()保存模型之后,我们可以使用torch.utils.load()恢复模型并进行后续操作,例如预测或微调。
以下是一个使用torch.utils.load()的示例:
import torch
import torch.nn as nn
from torchvision import models
# 定义模型
model = models.resnet50(pretrained=True)
num_classes = 10
model.fc = nn.Linear(model.fc.in_features, num_classes)
# 保存模型
torch.save(model.state_dict(), 'resnet50.pth')
# 加载模型
model = models.resnet50(pretrained=False)
model.fc = nn.Linear(model.fc.in_features, num_classes)
model.load_state_dict(torch.load('resnet50.pth', map_location=torch.device('cpu')))
model.eval()
在这个例子中,我们使用torchvision库中的预训练模型ResNet-50作为示例模型。我们首先更改模型的最后一层全连接层,以适应我们自己的任务(这里是分类10个类别)。然后,我们使用torch.save()函数将模型的状态字典保存到文件'resnet50.pth'中。
接下来,我们创建一个新的ResNet-50模型,并加载我们刚保存的模型的状态字典。为了确保在模型和数据之间进行正确的设备转换,我们可以使用map_location参数将模型加载到指定的设备。在这个例子中,我们将模型加载到CPU上。
最后,我们将模型设置为评估模式(model.eval()),以确保在推理过程中关闭模型中的一些不必要的计算,并准备进行后续操作,例如预测。
总的来说,使用torch.utils.load()函数从文件中加载已保存的PyTorch模型非常简单。我们只需要提供文件路径,并使用模型的load_state_dict()方法加载状态字典。此外,我们还可以使用map_location参数将模型加载到指定的设备上。
