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

torch.utils.serialization:高效保存和加载PyTorch模型的工具

发布时间:2024-01-10 07:59:54

在PyTorch中,torch.utils.serialization模块提供了高效保存和加载模型的工具。这些函数提供了与Python标准pickle模块相似的功能,但具有更高的性能和更小的存储空间。

有两个主要的函数可以用于保存和加载模型:torch.save()torch.load()。我们将在下面的例子中使用这两个函数来展示如何保存和加载PyTorch模型。

保存模型:

import torch
import torch.nn as nn

# 创建一个简单的神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc = nn.Linear(10, 2)
        
    def forward(self, x):
        x = self.fc(x)
        return x

# 创建一个实例化的模型
model = Net()

# 保存模型到文件
torch.save(model.state_dict(), 'model.pth')

上面的代码首先定义了一个简单的神经网络模型Net,并创建了一个实例化的模型model。然后,我们使用torch.save()函数将模型的状态字典保存到文件model.pth中。state_dict()函数返回一个包含模型所有参数的字典对象。

加载模型:

import torch
import torch.nn as nn

# 创建一个与保存模型相同结构的模型
model = Net()

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

# 将模型设置为评估模式
model.eval()

上面的代码首先创建了与保存模型相同结构的模型model。然后,我们使用torch.load()函数加载保存的参数字典,并使用load_state_dict()将参数加载到模型中。最后,我们使用eval()函数将模型设置为评估模式。

通过这个简单的例子,我们可以看到torch.save()torch.load()函数的简单而直接的用法。使用这些函数,我们可以方便地保存和加载PyTorch模型,以便在需要时重新使用它们。