训练常用工具[tqdm][argparse][yaml]
tqdm
1. 导入tqdm
from tqdm import *
2. 传入可迭代对象
快速使用
import time
for i in tqdm(range(100)):
time.sleep(0.01)
100%|██████████| 100/100 [00:01<00:00, 98.07it/s]
使用trange(100)
简写tqdm(range(100))
for i in trange(100):
time.sleep(0.01)
进阶1:通过update()
自定义进度条每次更新的步长
with tqdm(total=200) as pbar:
for i in range(20): # 总共更新 20 次
pbar.update(10) # 每次更新步长为 10
time.sleep(1)
with tqdm(total=200) as pbar:
:这行代码初始化了一个进度条对象pbar
,设定总进度(total
)为200。这里的total=200
表示整个进度条代表的操作总量是200个单位。for i in range(20):
:设置一个循环,总共迭代20次。这表示我们计划通过20次迭代来完成总进度。pbar.update(10)
:在每次循环中,调用pbar
的update
方法来更新进度条。参数10
表示每次循环我们完成了总任务的10个单位。由于总任务量是200个单位,而我们每次更新10个单位,因此需要更新20次才能达到总进度,这与range(20)
设置的迭代次数相吻合。
中点在于每次迭代时,通过update(10)
更新进度条的内容
如果只循环10次,最终只会在进度条为100/200时停止。
进阶2:通过set_description和set_postfix自定义进度条内容
pbar = tqdm(total=100)
for i in range(10):
time.sleep(0.1) # 模拟你的任务
pbar.set_description("Epoch{}".format(i))# 显示进度条左部的内容
pbar.set_postfix(batch=i, loss=0.1*i, accuracy=0.95-0.01*i, refresh=False)# 更新后缀信息以反映更多细节
pbar.update(10)
pbar.close()
进度条被设置了描述“Epoch i”,同时每次循环更新时,后缀显示了当前批次(batch)、损失(loss)和准确度(accuracy)。注意refresh=False
参数可以用来减少更新频率,以避免在某些情况下的性能问题。
Epoch9: 100%|██████████| 100/100 [00:01<00:00, 97.32it/s, accuracy=0.86, batch=9, loss=0.9]
Argparse
通过argparse库,能够在命令行中设置python文件的启动参数,同时根据获取的参数配置python文件中的对应部分。
第一步:创建ArgumentParser对象
parser = argparse.ArgumentParser("This is a Arg Parser!!"<