欢迎访问宙启技术站
智能推送

使用torch.utils.load()将已训练好的模型加载到PyTorch中

发布时间:2024-01-02 20:39:33

在PyTorch中,可以使用torch.utils.load()函数来加载已经训练好的模型。torch.utils.load()函数可以加载在PyTorch中保存的各种类型的检查点,包括权重、模型状态字典等。通过加载模型,我们可以重新使用该模型进行预测、微调或继续训练。

以下是一个使用torch.utils.load()函数加载已经训练好模型的示例:

import torch
import torchvision.models as models

# 创建一个预训练好的模型,这里以ResNet-18为例
model = models.resnet18(pretrained=True)
model.eval()

# 保存模型
torch.save(model.state_dict(), 'pretrained_model.pth')

# 加载并使用已经训练好的模型
loaded_model = models.resnet18(pretrained=False)  # 创建一个新的模型实例
loaded_model.load_state_dict(torch.load('pretrained_model.pth'))  # 加载已经训练好的模型权重
loaded_model.eval()

# 使用加载的模型进行预测
input_tensor = torch.randn(1, 3, 224, 224)  # 创建一个随机输入张量
output = loaded_model(input_tensor)

print(output)

在这个例子中,我们首先创建了一个预训练好的ResNet-18模型,并将其保存到了pretrained_model.pth文件中。然后,我们再次创建一个新的ResNet-18模型实例,并使用torch.utils.load()函数加载之前保存的模型权重。加载完模型后,我们可以通过调用该模型的eval()方法将其设置为评估模式,并使用加载的模型进行预测。最后,我们打印出了预测的结果。

需要注意的是,加载模型的时候,实例化的新模型应当与之前保存模型时使用的模型相同的结构。如果加载的模型与实例化的模型结构不匹配,加载过程会失败或产生错误。如果需要更改模型的结构,可以先实例化一个新模型,然后通过加载权重的方式将训练好的参数复制到新模型中。

通过使用torch.utils.load()函数,我们可以轻松地加载已经训练好的模型,并在PyTorch中继续使用它进行预测、微调或继续训练。