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