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

通过torch.utils.load()加载已训练好的PyTorch模型

发布时间:2024-01-02 20:41:49

在PyTorch中,可以使用torch.utils.load()函数加载已经训练好的模型。这个函数接受一个文件路径作为输入,并返回保存在文件中的模型。

首先,我们需要保存训练好的模型。下面是一个示例,展示了如何训练一个简单的神经网络模型,并将其保存到文件中:

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

# 定义一个简单的神经网络模型
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc = nn.Linear(20, 10)
    
    def forward(self, x):
        x = self.fc(x)
        return x

# 创建模型实例
model = SimpleNet()

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

# 训练模型
for epoch in range(10):
    # 此处省略训练代码
    pass

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

在上述代码中,我们首先定义了一个简单的神经网络模型SimpleNet,并在训练过程中使用了该模型。最后,我们使用torch.save()函数将模型的状态字典保存到文件中。

现在,我们可以使用torch.utils.load()函数加载保存的模型。以下是一个示例:

import torch
import torch.nn as nn
from torch.utils.data import DataLoader

# 定义一个简单的神经网络模型
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc = nn.Linear(20, 10)
    
    def forward(self, x):
        x = self.fc(x)
        return x

# 创建模型实例
model = SimpleNet()

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

# 模型推理
model.eval()

# 创建输入数据
input_data = torch.randn(1, 20)

# 进行模型推理
output = model(input_data)

# 打印输出结果
print(output)

在上述代码中,我们首先定义了一个与之前相同的神经网络模型SimpleNet。然后,我们使用model.load_state_dict()函数加载之前保存的模型参数。接下来,我们将模型切换到评估模式,通过调用model.eval()方法。最后,我们创建了一个输入数据input_data,并将其传递给模型,得到相应的输出output

以上就是使用torch.utils.load()函数加载已训练好的PyTorch模型的简单例子。根据你的具体任务和模型,你需要相应地调整代码。