利用torch.utils.load()加载预训练的PyTorch模型
发布时间:2024-01-02 20:39:10
torch.utils.load()函数用于加载预训练的PyTorch模型。它可以从指定的文件路径加载训练好的模型,并返回一个包含模型权重和其他相关信息的Python对象。加载预训练模型后,你可以使用这个对象进行推理、微调或进一步的训练。
下面有一个简单的例子,演示了如何使用torch.utils.load()加载预训练的PyTorch模型。
首先,假设我们已经训练好了一个用于图像分类的模型,并将其保存在文件model.pt中。
import torch import torch.nn as nn import torchvision.models as models import torch.utils.model_zoo as model_zoo # 创建一个简单的模型并保存 model = models.resnet18(pretrained=True) torch.save(model, 'model.pt')
接下来,我们可以使用torch.utils.load()来加载模型。具体步骤如下:
# 加载模型
loaded_model = torch.load('model.pt')
# 打印模型结构
print(loaded_model)
输出将类似于:
ResNet( (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False) ... (fc): Linear(in_features=512, out_features=1000, bias=True) )
可以看到,加载的模型是一个ResNet模型,具有相应的卷积层和全连接层。
加载的模型可以直接用于推理。下面是一个示例,将一张图片输入到模型中,获取预测结果:
import torchvision.transforms as transforms
from PIL import Image
# 加载图像并进行预处理
image = Image.open('image.jpg')
preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
input_tensor = preprocess(image)
input_batch = input_tensor.unsqueeze(0)
# 将图像输入模型,并进行推理
with torch.no_grad():
loaded_model.eval() # 设置为评估模式
output = loaded_model(input_batch)
# 获取预测结果
probabilities = nn.functional.softmax(output[0], dim=0)
在这个例子中,我们首先使用PIL库加载一张图片,并使用torchvision.transforms中的预处理函数将其转换为模型所需的张量格式。然后,我们将处理后的图像输入到加载的模型中,通过softmax函数获取了预测的概率分布。
这只是一个简单的例子,展示了如何使用torch.utils.load()加载预训练的PyTorch模型。实际上,根据具体的任务和模型结构,你可能需要进行更多的操作,比如微调模型参数、修改模型结构等。
