通过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模型的简单例子。根据你的具体任务和模型,你需要相应地调整代码。
