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模型,以便在需要时重新使用它们。
