python输出结果刷新及进度条的实现操作
print函数
python输出主要使⽤print函数,print函数介绍:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
*objects表⽰要打印的值,表⽰多个⽆名参数或需要打印的值;
sep=' ',对应上⾯要打印的值中间间隔,默认⼀个空格;
end='\n',传⼊值打印完后的结束符号,默认为换⾏符,可以⾃⾏设置;
file=sys.stdout,设置打印输出参数,默认打印到终端,也可设置打印保存到⽂件;
flush=False,是否刷新打印结果。
⼀⾏输出结果并刷新
在⼀⾏中显⽰输出结果,每次刷新,其中'\r'表⽰回到当前的开头,end=''表⽰结束符为空,这样就可以每次更新结果
import time
for i in range(15):
time.sleep(0.5) # 这⾥为了查看输出变化,实际使⽤不需要sleep
print('\r', i, end='')
# print('\r', 15-i, end='') # 从两位变⼀位会有问题
上⾯代码有个问题,当输出i从⼤到⼩,有位数变化时,结果不正确,可⽤format格式化输出,可解决问题:
import time
for i in range(15):
time.sleep(0.5)
print('\r', "{:d}".format(15-i), end='')
模型训练中loss和acc的刷新输出
我们在训练机器学习和深度学习模型中,总会隔⼀段时间输出损失函数和准确率,每次都直接print输出,终端会输出很多信息,这⾥⽤单⾏输出并刷新的⽅法来输出这些信息,我们设置epochs和batch的数量,每次batch输出刷新,⼀个epoch完后同时输出train和test的结果。
import time
# 设置epochs和batch的数量
epochs = 5
n_batch = 15
# 这⾥是测试⾃⼰设置的loss和acc
train_loss = 1.2345
train_acc = 0.345678
test_loss = 1.1234
test_acc = 0.235467
for i in range(epochs):
for j in range(n_batch):
python格式化输出formattime.sleep(0.5)
train_loss -= 0.001
train_acc += 0.0001
print("\rEpoch: {:d} batch: {:d} loss: {:.4f} acc: {:.4f} | {:.2%}"
.format(i+1, j+1, train_loss, train_acc, (j+1)*1.0/n_batch), end='')
test_loss -= 0.001
test_acc += 0.0001
print("\rEpoch: {:d}/{:d} train_loss: {:.4f} test_loss: {:.4f} train_acc: {:.4f} test_acc: {:.4f}"
.format(i+1, 5, train_loss, test_loss, train_acc, test_acc), end='\n')
这⾥注意,print⾥"Epoch"前⾯有⼀个"\r",这个必须要有,同时⾥⾯循环end='',外⾯循环end='\n',最终打印结果如下:
tqdm显⽰进度条
⾸先安装tqdm:pip install tqdm
简单使⽤,读取整数,直接在tqdm中传⼊⼀个list,如果直接给定的是⼀个整数,可以直接⽤trange
import time
from tqdm import tqdm, trange
for i in tqdm(range(100)):
time.sleep(0.05)
# do something
# for i in trange(100):
# time.sleep(0.05)
# # do something
显⽰结果如下,显⽰有百分⽐,以及当前处理到多少个
tdqm输⼊的list可以是字符串,也可以对输出进度条加⼀些描述
import time
from tqdm import tqdm
pbar = tqdm(["a", "b", "c", "d", "e"])
for char in pbar:
time.sleep(0.8)
pbar.set_description("Processing %s" % char)
# pbar.set_description("Processing {0}".format(char))
以上这篇python输出结果刷新及进度条的实现操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论