如何在python中使用save_checkpoint()函数来保存训练过程中的模型
发布时间:2023-12-30 13:27:35
在Python中,可以使用PyTorch提供的save_checkpoint()函数来保存训练过程中的模型。save_checkpoint()函数可以将模型的参数和优化器的状态保存到硬盘上,以便于之后的加载和继续训练。
下面是一个使用save_checkpoint()函数保存模型的例子:
import torch
import torch.nn as nn
import torch.optim as optim
# 定义一个简单的神经网络模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc = nn.Linear(10, 1)
def forward(self, x):
return self.fc(x)
# 创建一个模型实例
model = Net()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 设置训练过程中的一些参数
n_epochs = 10
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32)
# 训练过程
for epoch in range(n_epochs):
for batch_idx, (data, target) in enumerate(train_loader):
optimizer.zero_grad()
output = model(data)
loss = nn.functional.mse_loss(output, target)
loss.backward()
optimizer.step()
# 训练过程中保存模型
checkpoint = {
'epoch': epoch + 1,
'state_dict': model.state_dict(),
'optimizer': optimizer.state_dict()
}
torch.save(checkpoint, 'model_checkpoint.pth')
print(f"Epoch {epoch+1} completed successfully")
print("Training completed")
在上述例子中,我们定义了一个简单的神经网络模型,并创建了一个优化器。然后我们进行了迭代训练过程,在每个epoch结束时保存了模型。
在checkpoint中,我们将当前的epoch数、模型的状态字典和优化器的状态字典保存下来。最后将checkpoint保存为一个文件,其中model_checkpoint.pth为保存的文件名。
通过这种方式,我们可以在训练过程中保存模型的中间状态,并在之后的时间点上加载模型以便于继续训练或进行推理。
