linux

Linux PyTorch如何进行模型评估

小樊
49
2025-08-21 18:42:13
栏目: 智能运维

在Linux环境下使用PyTorch进行模型评估,通常涉及以下步骤:

  1. 加载预训练模型: 首先,你需要加载已经训练好的模型。这通常是通过torch.load()函数完成的,该函数可以从文件中加载模型权重。

    import torch
    model = torch.load('model.pth')  # 假设模型权重保存在model.pth文件中
    model.eval()  # 将模型设置为评估模式
    
  2. 准备数据加载器: 使用torch.utils.data.DataLoader来加载测试数据集。确保数据加载器返回的数据是模型所需的输入格式。

    from torch.utils.data import DataLoader
    test_dataset = ...  # 加载你的测试数据集
    test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)
    
  3. 评估模型: 遍历测试数据集,将数据输入模型,并计算损失和准确率等指标。

    criterion = torch.nn.CrossEntropyLoss()  # 假设是分类任务
    total_loss = 0.0
    correct = 0
    total = 0
    
    with torch.no_grad():  # 在评估模式下,不需要计算梯度
        for inputs, targets in test_loader:
            outputs = model(inputs)
            loss = criterion(outputs, targets)
            total_loss += loss.item()
            
            _, predicted = torch.max(outputs.data, 1)
            total += targets.size(0)
            correct += (predicted == targets).sum().item()
    
    accuracy = 100 * correct / total
    avg_loss = total_loss / len(test_loader)
    print(f'Accuracy: {accuracy:.2f}%')
    print(f'Average Loss: {avg_loss:.4f}')
    
  4. 可视化结果(可选): 如果需要,可以使用matplotlib或其他可视化库来绘制损失曲线或准确率曲线。

    import matplotlib.pyplot as plt
    
    # 假设你有一个列表来存储每个epoch的损失
    losses = []
    
    # 在训练过程中,你可以这样做:
    # for epoch in range(num_epochs):
    #     ...
    #     losses.append(loss.item())
    
    # 然后在评估之后绘制损失曲线
    plt.plot(losses)
    plt.title('Loss Curve')
    plt.xlabel('Epoch')
    plt.ylabel('Loss')
    plt.show()
    
  5. 保存评估结果(可选): 如果你想将评估结果保存到文件中,可以使用Python的文件操作功能。

    with open('evaluation_results.txt', 'w') as f:
        f.write(f'Accuracy: {accuracy:.2f}%\n')
        f.write(f'Average Loss: {avg_loss:.4f}\n')
    

确保在执行上述代码之前已经安装了PyTorch和相关的依赖库。如果你还没有安装PyTorch,可以访问PyTorch官网获取安装指令。

0
看了该问题的人还看了