zoukankan      html  css  js  c++  java
  • 在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已经花费的时间和还需要消耗的时间。

  • 相关阅读:
    TCP/IP和HTTP的举例理解
    c#中栈和堆的理解
    c#设计模式之单例模式
    JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值
    JSON.stringify初识
    c# 过滤字符串中的重复字符
    C#中jQuery Ajax实例(二)
    C#中jQuery Ajax实例(一)
    jQuery动态对表格Table进行添加或删除行以及修改列值操作
    asp.net中控件的Attributes用法
  • 原文地址:https://www.cnblogs.com/AlgrithmsRookie/p/13367575.html
Copyright © 2011-2022 走看看