pytorch 笔记之 model.eval() 和 with torch.no_grad()
model.eval()
负责改变batchnorm、dropout的工作方式,如在eval()模式下,dropout是不工作的。
torch.no_grad()
负责关掉梯度计算,节省eval的时间。
只进行inference时,model.eval()
是必须使用的,否则会影响结果准确性。 而 torch.no_grad()
并不是强制的,只影响运行效率。
一般写为:
# evaluate model: model.eval() with torch.no_grad(): ... out_data = model(data) ...
实践经验:当我训练模型时候,训练集的精度一直提高,但是验证集和瞎猜一样,我以为可能是过拟合?尝试了精简模型架构,但是依旧如此。这明显不是过拟合问题,最后我发现自己的验证集生成错误了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现