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
相关推荐
大数据魔法师6 小时前
Streamlit(二十三)- 教程(二)- 动态导航
python·web
HackTorjan8 小时前
2026年5月29日:全球首个通用人工智能操作系统正式发布,开启人机协同新纪元
人工智能
刘大猫.8 小时前
智造短剧新引擎:火山引擎上线「火山剧创 1.0」,制作效率提升 80%
人工智能·ai·chatgpt·机器人·大模型·火山引擎·短剧新引擎
红尘散仙9 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
雅菲奥朗9 小时前
企业级 AI 自动化|OpenClaw 龙虾实战与认证
运维·人工智能·自动化·openclaw
HIT_Weston9 小时前
99、【Agent】【OpenCode】task 工具提示词(Slash command)(一)
人工智能·agent·opencode
25 Hz9 小时前
Mind 爱好者时空表征刊 第24期 | 时间结构学习、空间对时间表征的补偿、事件内部的时间扭曲……
人工智能
心中有国也有家9 小时前
GE图引擎深度解析——CANN的计算图优化与执行引擎
人工智能·pytorch·python·学习·numpy
海兰9 小时前
【文字三国志:第一篇】天命重构,大语言模型(LLM)动态生成文言风格的叙事文本的文字游戏
人工智能·游戏·语言模型
cxr8289 小时前
高分子复合材料 AI 逆向设计合——验证闭环、决策优化与中试放大
人工智能·材料逆向设计合成