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

使用torch.utils.load()从文件中加载已训练好的PyTorch模型

发布时间:2024-01-02 20:40:30

使用torch.utils.load()函数可以从文件中加载已经训练好的PyTorch模型。这个函数可以加载保存在硬盘上的模型参数,以便我们可以在模型训练之外使用它们。

下面是一个加载已训练好的PyTorch模型的例子。

首先,我们需要定义一个简单的模型,以便训练和保存。

import torch
import torch.nn as nn
import torch.optim as optim

# 定义一个简单的模型
class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.fc = nn.Linear(10, 1)

    def forward(self, x):
        return self.fc(x)

# 初始化模型和数据
model = SimpleModel()
input_data = torch.randn(1, 10)

# 定义优化器和损失函数
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for i in range(100):
    optimizer.zero_grad()
    output = model(input_data)
    loss = criterion(output, torch.tensor([1.0]))
    loss.backward()
    optimizer.step()

# 保存模型参数
torch.save(model.state_dict(), "model.pth")

以上代码首先定义了一个简单的线性模型 SimpleModel,并使用随机生成的数据进行训练。最后使用 torch.save() 函数保存了模型的参数为 "model.pth" 文件。

现在让我们使用 torch.utils.load() 函数来加载保存的模型参数:

import torch
import torch.nn as nn

# 初始化模型
model = SimpleModel()

# 加载模型参数
model.load_state_dict(torch.load("model.pth"))

# 使用加载的模型进行预测
input_data = torch.randn(1, 10)
output = model(input_data)

print(output)

在以上代码中,首先我们需要初始化一个相同结构的模型 SimpleModel。然后使用 model.load_state_dict() 函数来加载保存的模型参数。最后,我们可以使用加载的模型进行预测。

加载的模型在使用之前需要指定模型的结构,确保加载的参数可以正确应用于模型中。

总结起来,使用 torch.utils.load() 函数可以轻松加载保存的模型参数,以便我们可以在其他任务中使用这些训练好的参数。注意,在加载参数之前,需要确保定义的模型结构与保存时的模型结构一致。