PyTorch绘制训练过程的accuracy和loss曲线

作者:宇宙中心我曹县2024.01.07 17:22浏览量:33

简介:本文将介绍如何使用PyTorch绘制训练过程中的accuracy和loss曲线,帮助你更好地理解模型训练过程。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

PyTorch中,我们可以使用matplotlib库来绘制训练过程中的accuracy和loss曲线。下面是一个简单的示例代码,展示了如何实现这一目标。
首先,确保你已经安装了PyTorch和matplotlib库。如果还没有安装,可以使用以下命令进行安装:

  1. pip install torch torchvision
  2. pip install matplotlib

接下来,我们创建一个简单的PyTorch模型和训练过程,并绘制accuracy和loss曲线。

  1. import torch
  2. import torch.nn as nn
  3. import torch.optim as optim
  4. import matplotlib.pyplot as plt
  5. # 定义一个简单的PyTorch模型
  6. class SimpleModel(nn.Module):
  7. def __init__(self):
  8. super(SimpleModel, self).__init__()
  9. self.fc = nn.Linear(10, 2)
  10. def forward(self, x):
  11. return self.fc(x)
  12. # 加载数据集
  13. x = torch.randn(100, 10)
  14. y = torch.randint(0, 2, (100,))
  15. x_train, y_train = x[:80], y[:80]
  16. x_val, y_val = x[80:], y[80:]
  17. # 实例化模型、损失函数和优化器
  18. model = SimpleModel()
  19. criterion = nn.CrossEntropyLoss()
  20. optimizer = optim.SGD(model.parameters(), lr=0.01)
  21. # 训练模型并绘制accuracy和loss曲线
  22. num_epochs = 20
  23. for epoch in range(num_epochs):
  24. # 前向传播
  25. outputs = model(x_train)
  26. loss = criterion(outputs, y_train)
  27. _, predicted = torch.max(outputs, 1)
  28. correct = (predicted == y_train).sum().item() / y_train.size(0)
  29. # 反向传播和优化
  30. optimizer.zero_grad()
  31. loss.backward()
  32. optimizer.step()
  33. # 打印训练信息并更新图表
  34. if (epoch+1) % 2 == 0:
  35. print(f'Epoch {epoch+1}/{num_epochs}, Loss: {loss.item()}, Accuracy: {correct * 100:.2f}%')
  36. plt.plot(losses) # losses是一个列表,用于存储每个epoch的loss值
  37. plt.plot(accuracies) # accuracies是一个列表,用于存储每个epoch的accuracy值
  38. plt.xlabel('Epoch')
  39. plt.ylabel('Loss/Accuracy')
  40. plt.title('Training Loss and Accuracy')
  41. plt.show()
article bottom image

相关文章推荐

发表评论

图片