在mini-batch训练中使用tqdm来创建进度条

Posted algrithmsrookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mini-batch训练中使用tqdm来创建进度条相关的知识,希望对你有一定的参考价值。

tqdm是python中的一个用来供我们创建进度条的库。在进行深度学习的研究时,我们可以使用这个库为我们直观地展示当前的训练进度,下面来说说如何在mini-batch优化中使用这个库。

我希望程序能够在每一个epoch都使用进度条来显示当前epoch的训练情况,我使用的代码如下:

1 from tqdm import tqdm #从tqdm库中导入tadm类
2 
3 for epoch in range(epochs): #训练轮次
4     with tqdm(total = batch_num, desc=fEpoch {epoch+1}/{epochs}, unit=it) as pbar: #创建一个进度条
5         for batch_idx in range(batch_num): #mini-batch训练
6             ...
7             pbar.set_postfix({batch_loss:loss}) #在进度条后显示当前batch的损失
8             pbar.update(1) #更当前进度,1表示完成了一个batch的训练

所得到的的进度条如下图所示:

技术图片

“from tqdm import tqdm”就是从tqdm库中导入tqdm类。一开始我写成了“import tqdm”,导致程序报错,所以这一点要注意。

"with tqdm(total = batch_num, desc=fEpoch {epoch+1}/{epochs}‘, unit=it‘) as pbar: #创建一个进度条"使用python的with结构来创建一个tqdm对象pbar。如果不使用with结构,就需要在一次epoch训练的结尾调用tqdm对象的close()函数。这一语句中各个参数的意思是:

total:为一个epoch中batch的总数量,即迭代的总次数;

desc:放在进度条最前的一段描述,在此显示的是当前的epoch及总共需要多少个epoch;

unit:迭代速度的单位,it是iteration的简写,这里指的是以每秒完成多少次迭代作为速度度量并显示在进度条上,见上图中的“1.41it/s”。

“pbar.set_postfix({batch_loss:‘loss}) #在进度条后显示当前batch的损失”,在进度条的最后显示当前batch的损失,如图中的“batch_loss=1.66e+5”。

pbar.update(1)用来更新进度,这里的1指的是完成了一个batch的训练,让进度条加1。

上图中的“03:21<01:21”分别显示训练当前batch已经花费的时间和还需要消耗的时间。

以上是关于在mini-batch训练中使用tqdm来创建进度条的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kubernetes 中使用 tqdm

python的tqdm模块

带 tqdm 的 asyncio aiohttp 进度条

多处理:使用 tqdm 显示进度条

tqdm:Python 进度条

复制文件时在控制台中显示进度条。在 python 中使用 tqdm