在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=f'Epoch {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=f'Epoch {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已经花费的时间和还需要消耗的时间。

posted @ 2020-07-23 17:30  NewRookie  阅读(2729)  评论(0编辑  收藏  举报