在 PyTorch 训练中使用 `tqdm` 显示进度条


在 PyTorch 训练中使用 tqdm 显示进度条

在深度学习的训练过程中,实时查看训练进度是非常重要的,它可以帮助我们更好地理解训练的效率,并及时调整模型或优化参数。使用 tqdm 库来为训练过程添加进度条是一个非常有效的方式,本文将介绍如何在 PyTorch 中结合 tqdm 来动态显示训练进度。

1. 安装 tqdm

首先,如果你还没有安装 tqdm,可以通过 pip 命令进行安装:

pip install tqdm

tqdm 是一个非常轻量级的 Python 库,它可以快速地为循环加上进度条,并提供非常友好的终端显示效果。

2. 如何在训练循环中使用 tqdm

2.1 包装 train_loader 和显示进度条

在训练过程中,最常见的任务是通过数据加载器(train_loader)来批量读取训练数据并进行前向传播、反向传播、优化等操作。为了显示训练的进度条,我们可以使用 tqdm 来包装 train_loader。这样,我们就能在每次读取数据时自动更新进度条。

示例代码:

from tqdm import tqdm
import torch
import torch.nn as nn
import torch.optim as optim# 假设模型、损失函数、优化器等已经定义好
model = MyModel().to(device)
optimizer = optim.Adam(model.parameters())
criterion = nn.CrossEntropyLoss()# 假设 train_loader 已经定义好
train_loader = ...num_epochs = 10# 训练循环
for epoch in range(num_epochs):model.train()  # 设置模型为训练模式running_loss = 0.0correct = 0total = 0# 使用 tqdm 包装 train_loader,自动显示进度条for batch_idx, (audio, labels) in enumerate(tqdm(train_loader, desc=f"Epoch {epoch+1}/{num_epochs}", ncols=100)):audio = audio.to(device)labels = labels.to(device)# 前向传播optimizer.zero_grad()outputs = model(audio)# 计算损失loss = criterion(outputs, labels)# 反向传播loss.backward()optimizer.step()# 更新统计信息running_loss += loss.item()_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()# 输出每个 epoch 的总结信息print(f"\nEpoch {epoch+1} complete. Loss: {running_loss/len(train_loader):.4f}, Accuracy: {100 * correct / total:.2f}%")

2.2 进度条的显示效果

当你使用 tqdm 包装 train_loader 时,进度条会自动显示。每个 epoch 内,tqdm 会根据 train_loader 的批次数量动态更新进度条。显示的内容通常包括:

  • 当前 epoch 和 batch 的编号
  • 已完成的批次数量
  • 当前 batch 的损失值
  • 进度百分比
  • 剩余时间估计
进度条示例:
Epoch 1/10: 100%|█████████████████████████████████████████████████████████████████████| 2043/2043 [03:30<00:00,  9.70it/s]

进度条字段说明:

  • Epoch 1/10: 表示当前是第 1 个 epoch,总共有 10 个 epoch。
  • 100%: 表示该 epoch 的训练已经完成。
  • █████████████████████████████████████████████████████████████████████: 代表进度条,显示当前训练的进度。
  • 2043/2043: 当前 epoch 中处理的 batch 数,表示已处理 2043 个 batch,总共有 2043 个。
  • 03:30<00:00: 训练已经花费的时间(03:30)和预计剩余时间(<00:00)。
  • 9.70it/s: 表示每秒处理的批次数(即训练速度)。

2.3 进度条中的其他信息

TQDM 还可以显示更多的训练相关信息,例如:

  • 损失(Loss):当前 batch 的损失值。
  • 训练速度(it/s):每秒处理的批次数。
  • 估算剩余时间:根据当前训练速度估算的剩余时间。

这些信息可以帮助你在训练过程中更好地评估模型的学习情况。

3. 总结

使用 tqdm 包装 train_loader 可以极大地提高训练过程中的可视化效果,使得我们能够实时了解训练的进展。进度条的显示不仅可以告诉我们当前 epoch 的训练进度,还能够实时更新损失、准确率等信息,帮助我们更加高效地调试和优化模型。

如果你在进行长期训练时,tqdm 显示的剩余时间可以帮助你更好地掌控时间管理。在大规模训练时,动态显示进度条也能有效提升训练的可操作性和可视化体验。

4. 常见错误:TypeError: 'module' object is not callable

解决方法看: 我的另一篇博客

5. 参考文献

  • tqdm 官方文档
  • PyTorch 官方文档

文章包含了 tqdm 的基本用法以及在 PyTorch 训练中如何集成它,应该能帮助你快速理解如何提高训练过程的可视化效果。如果你有其他细节需要补充或修改,评论区告诉我!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows基础之病毒编写

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

家校通小程序实战教程02口令管理

目录 1 创建数据源2 搭建后台功能3 生成口令4 调用API总结 我们的小程序上线之后&#xff0c;必然面临家长要加入的问题。微搭有登录验证的功能&#xff0c;但是手机验证的机制是&#xff0c;如果你未注册就给你自动注册一个账号&#xff0c;如果以注册了收到验证码就可以登录系…

Git 使用技巧

1. 查看提交历史 git log 显示所有提交的详细信息 git log --oneline 查看每个版本的简要信息 git log --graph --decorate --all 显示完整提交图&#xff08;带详情&#xff09; ​​​​​​​git log --oneline --graph --all​​​​​​​ 显示分支合并图 git sh…

部署自动清理任务解决ORA-00257: archiver error. Connect internal only, until freed

使用oracle数据库的时候&#xff0c;我们一般都会开启归档&#xff0c;确保数据库的日志连续和和数据安全。但随着数据库的运行&#xff0c;归档文件会越来越多&#xff0c;最终撑满磁盘空间&#xff0c;数据库无法继续归档&#xff0c;出现“ORA-00257: archiver error. Conne…

Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?

大家好&#xff0c;我是锋哥。今天分享关于【Elasticsearch中的节点&#xff08;比如共20个&#xff09;&#xff0c;其中的10个选了一个master&#xff0c;另外10个选了另一个master&#xff0c;怎么办&#xff1f;】面试题。希望对大家有帮助&#xff1b; Elasticsearch中的节…

阿里发布 EchoMimicV2 :从数字脸扩展到数字人 可以通过图片+音频生成半身动画视频

EchoMimicV2 是由阿里蚂蚁集团推出的开源数字人项目&#xff0c;旨在生成高质量的数字人半身动画视频。以下是该项目的简介&#xff1a; 主要功能&#xff1a; 音频驱动的动画生成&#xff1a;EchoMimicV2 能够使用音频剪辑驱动人物的面部表情和身体动作&#xff0c;实现音频与…

Vue 的 computed 如何实现接受一个参数

在 Vue 中&#xff0c;computed 属性是基于响应式数据的 getter 方法&#xff0c;它通常用于依赖 Vue 实例的数据来计算一个值。然而&#xff0c;computed 默认是不能接受参数的&#xff0c;因为它是绑定到 Vue 实例的响应式数据的。 不过&#xff0c;如果你需要在 computed 中…

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化&#xff1f; 重要性&#xff1a;★★ NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…

C#基础控制台程序

11.有一个54的矩阵&#xff0c;要求编程序求出其中值最大的那个元素的值&#xff0c;以及其所在的行号和列号。 12.从键盘输入一行字符&#xff0c;统计其中有多少个单词&#xff0c;单词之间用空格分隔开。 13.输入一个数&#xff0c;判断它是奇数还是偶数&#xff0c;如果…

三六零[601360]行情数据接口

1、三六零&#xff1a;实时行情 Restful API # 测试接口&#xff1a;可以复制到浏览器打开 https://tsanghi.com/api/fin/stock/XSHG/realtime?tokendemo&ticker601360获取股票实时行情&#xff08;开、高、低、收、量&#xff09;。 请求方式&#xff1a;GET。 Python示例…

SSM--SpringMVC复习(二)

请求 URL匹配&#xff1a; RequestMapping RequestMapping 负责将请求映射到对应的控制器方法上。 RequestMapping 注解可用于类或方法上。用于类上&#xff0c;表示类中的所有响应请求的方法都以该地址作为父路径。 在整个 Web 项目中&#xff0c;RequestMapping 映射的请求…

Pydantic 数据验证

Pydantic 验证 from datetime import datetime from typing import List, Optional from pydantic import BaseModel, EmailStr, field_validator, ValidationErrordef check_name(v: str) -> str:"""Validator to be used throughout"""if …

LangChain——管道提示词 缓存

管道提示词 管道提示词可以将多个提示组合在一起。当我们想要使用部分提示时&#xff0c;这会很有用。这里可以通过PipelinePrompt来完成。 PipelinePrompt由两部分组成&#xff1a; 最终提示&#xff1a;返回的最终提示&#xff1b;管道提示&#xff1a;元组列表&#xff0c…

eclipse-git项目提示NO-HEAD

1、出现该问题的过程 本人在用eclipse拉取git代码&#xff0c;刚拉取完&#xff0c;可能还没来得及跟本地的分支合并&#xff0c;电脑就卡动了。无奈只能重启电脑&#xff0c;打开eclipse&#xff0c;maven项目后面就出现了xxx NO-HEAD的提示。 2、问题解决 根据错误提示&am…

使用OpenSSL创建CA,并基于CA创建证书

生成CA证书 生成CA证书的私钥 openssl genrsa -out ca.key 4096生成CA证书 openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/CCN/STBeijing/LBeijing/Oexample/OUPersonal/CNMyPersonal Root CA" \-key ca.key \-out ca.crt生成Server证书 证书通常包…

WPF异步UI交互功能的实现方法

前面的文章我们提及过&#xff0c;异步UI的基础实现。基本思路主要是开启新的UI线程&#xff0c;并通过VisualTarget将UI线程上的Visual(即RootVisual)连接到主线程上的UI上即可渲染显示。 但是&#xff0c;之前的实现访问是没有交互能力的&#xff0c;视觉树上的UI并不能实现…

Cross-Site Scripting(XSS)攻击

简介 XSS&#xff08;跨站脚本攻击&#xff09;是一种常见的 Web 安全漏洞&#xff0c;攻击者通过在目标网站的输入框中注入恶意脚本&#xff0c;当其他用户&#xff08;如管理员&#xff09;查看包含恶意脚本的页面时&#xff0c;脚本会在他们的浏览器中执行。XSS 攻击可以分…

linux mount nfs开机自动挂载远程目录

要在Linux系统中实现开机自动挂载NFS共享目录&#xff0c;你需要编辑/etc/fstab文件。以下是具体步骤和示例&#xff1a; 确保你的系统已经安装了NFS客户端。如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-install nfs-common 编辑/etc/fstab文件&#…

基于学习的实例匹配方法

文章目录 基于学习的实例匹配方法基于学习的实例匹配方法 大规模知识图谱的实例匹配可视为机器学习的一个二分类问题,因此可以利用知识图谱中丰富的网络结构信息和实例相关的信息来训练一个分类模型,从而实现实例匹配。同时,由于实例的规模较大,在分类之前需要对实例进行分…

uniapp中使用uni-forms实现表单管理,验证表单

前言 uni-forms 是一个用于表单管理的组件。它提供了一种简化和统一的方式来处理表单数据&#xff0c;包括表单验证、字段绑定和提交逻辑等。使用 uni-forms可以方便地创建各种类型的表单&#xff0c;支持数据双向绑定&#xff0c;可以与其他组件及API进行良好的集成。开发者可…