pytorch evaluate model(torch.no_grad() and model.eval())

  • 使用 torch.no_grad():这是一个上下文管理器(context manager),用于暂时禁用在其作用域内的所有计算的梯度计算。这在模型评估阶段非常有用,因为它可以减少内存消耗并提高计算效率,因为验证过程中不需要计算梯度信息。

  • 调用 model.eval():这将模型设置为评估模式。在这种模式下,模型中的某些层(如批量归一化层 BatchNorm 和 dropout 层)会改变其行为,以适应评估(例如,BatchNorm 层会使用在训练时收集的运行时统计数据,而 dropout 层会关闭)。

py 复制代码
import torch
from torch.utils.data import DataLoader
from sklearn.metrics import accuracy_score

def evaluate_model(model, data_loader, device):
    """
    对给定的模型和数据加载器进行验证。
    
    参数:
    - model: 要验证的PyTorch模型。
    - data_loader: 数据的PyTorch DataLoader。
    - device: 用于模型和数据的设备('cuda' 或 'cpu')。
    """
    # 将模型设置为评估模式,这会关闭dropout和batch normalization层的训练行为
    model.eval()
    
    # 初始化度量指标
    total_correct = 0
    total_samples = 0
    
    # 使用torch.no_grad()上下文管理器来禁用梯度计算
    with torch.no_grad():
       # 遍历数据加载器中的所有批次
        for inputs, targets in data_loader:
            # 将数据移动到指定的设备
            inputs, targets = inputs.to(device), targets.to(device)
            
            # 前向传播,获取模型输出
            outputs = model(inputs)
            
            # 计算预测结果
            _, predicted = torch.max(outputs, 1)
            
            # 计算准确度
            correct = (predicted == targets).sum().item()
            
            total_correct += correct
            total_samples += targets.size(0)
    
    # 计算总体准确度
    accuracy = total_correct / total_samples
    
    return accuracy
相关推荐
云烟成雨TD1 分钟前
LangFlow 1.x 系列【5】可视化编辑页面功能说明
人工智能·python·agent
小宋10214 分钟前
Dify 前后端联调踩坑记录:`/console/api/account/profile` 登录失败排查
人工智能·dify
幸福指北22 分钟前
现代化智能终端AShell,是否能够替代你的古法终端?让服务器运维更加高效智能化,快来试试看!
人工智能·ai·终端
女神下凡1 小时前
office系列软件 激活破解(office 2019, 2021, 2024)
人工智能·microsoft
2503_931712481 小时前
京东裸眼3D展示——30分钟建模绒感褶皱光泽都能还原
人工智能
星马梦缘1 小时前
机器学习与模式识别 第八章 MAP与偏方差 考点压缩
人工智能·机器学习·map·岭回归·mle·双重下降
一楼的猫1 小时前
AI写作合规技术方案:平台检测机制分析与规避策略
人工智能·学习·机器学习·ai写作
阿拉斯攀登1 小时前
Agent 核心架构:思考-行动-观察循环(ReAct)
人工智能·ai·agent·react
geovindu1 小时前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式
HyperAI超神经1 小时前
活动预告|智源/TileRT/腾讯/华为/智元创新同台,共探 AI 编译的多层级协同优化
人工智能·ai 编译器·腾讯·具身智能·矩阵乘法·算子优化·华为昇腾