如何用pytorch一边训练一边测试精度
时间: 2023-10-05 22:05:33 浏览: 176
要在 PyTorch 中一边训练一边测试精度,你可以在每个训练步骤之后评估模型的性能。以下是一个基本的示例代码:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义模型
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
# 定义模型结构
def forward(self, x):
# 定义前向传播逻辑
return x
# 实例化模型
model = Model()
# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.001)
# 训练和测试循环
for epoch in range(num_epochs):
# 训练阶段
model.train()
for data in train_loader:
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# 测试阶段
model.eval()
correct = 0
total = 0
with torch.no_grad():
for data in test_loader:
inputs, labels = data
outputs = model(inputs)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
accuracy = correct / total
print(f"Epoch {epoch+1}: Accuracy = {accuracy}")
```
在这个示例代码中,首先定义了一个自定义的模型类 `Model`,并实例化了模型对象 `model`。然后,定义了损失函数(这里使用交叉熵损失)和优化器(这里使用随机梯度下降)。接下来,使用一个循环来进行训练和测试。
在训练阶段,将模型设置为训练模式(`model.train()`),然后通过遍历训练数据加载器进行前向传播、计算损失、反向传播和优化参数。
在测试阶段,将模型设置为评估模式(`model.eval()`),然后通过遍历测试数据加载器进行前向传播并计算准确率。通过将正确预测的样本数量除以总样本数,得到准确率。
在每个 epoch 结束后,打印出当前的准确率。
这样,你就可以在 PyTorch 中一边训练一边测试模型的精度。请注意,代码中的 `train_loader` 和 `test_loader` 是你需要自己定义的训练数据和测试数据的数据加载器。
阅读全文