PyTorch绘制训练过程的accuracy和loss曲线
2024.01.07 17:22浏览量:33简介:本文将介绍如何使用PyTorch绘制训练过程中的accuracy和loss曲线,帮助你更好地理解模型训练过程。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
立即体验
在PyTorch中,我们可以使用matplotlib库来绘制训练过程中的accuracy和loss曲线。下面是一个简单的示例代码,展示了如何实现这一目标。
首先,确保你已经安装了PyTorch和matplotlib库。如果还没有安装,可以使用以下命令进行安装:
pip install torch torchvision
pip install matplotlib
接下来,我们创建一个简单的PyTorch模型和训练过程,并绘制accuracy和loss曲线。
import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
# 定义一个简单的PyTorch模型
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc = nn.Linear(10, 2)
def forward(self, x):
return self.fc(x)
# 加载数据集
x = torch.randn(100, 10)
y = torch.randint(0, 2, (100,))
x_train, y_train = x[:80], y[:80]
x_val, y_val = x[80:], y[80:]
# 实例化模型、损失函数和优化器
model = SimpleModel()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练模型并绘制accuracy和loss曲线
num_epochs = 20
for epoch in range(num_epochs):
# 前向传播
outputs = model(x_train)
loss = criterion(outputs, y_train)
_, predicted = torch.max(outputs, 1)
correct = (predicted == y_train).sum().item() / y_train.size(0)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 打印训练信息并更新图表
if (epoch+1) % 2 == 0:
print(f'Epoch {epoch+1}/{num_epochs}, Loss: {loss.item()}, Accuracy: {correct * 100:.2f}%')
plt.plot(losses) # losses是一个列表,用于存储每个epoch的loss值
plt.plot(accuracies) # accuracies是一个列表,用于存储每个epoch的accuracy值
plt.xlabel('Epoch')
plt.ylabel('Loss/Accuracy')
plt.title('Training Loss and Accuracy')
plt.show()

发表评论
登录后可评论,请前往 登录 或 注册