如何在含model.predict的os.listdir循环中正确显示tqdm进度条?
解决tqdm与Keras predict进度条冲突的问题
问题原因
Keras的model.predict()方法默认会启用自身的进度条,当你在tqdm循环内调用该方法时,两个进度条会互相干扰,导致出现多条小型的Keras进度条,你需要的文件级tqdm进度条无法正常显示。
解决方案
方法1:关闭Keras predict的内置进度条
直接在调用model.predict()时设置verbose=0,禁用其自带的进度条输出:
for filename in tqdm(os.listdir('train')): path = os.path.join('train', filename) for i in range(9): # 通过verbose=0关闭Keras的进度条 features = model.predict(some_array, verbose=0)
方法2:嵌套tqdm实现多级进度监控(可选)
如果需要同时监控文件处理进度和每个文件内的子任务进度,可以嵌套使用tqdm,同时确保关闭Keras的进度条:
for filename in tqdm.tqdm(os.listdir('train'), desc="处理文件"): path = os.path.join('train', filename) # leave=False让内层进度条完成后自动清除,避免冗余输出 for i in tqdm.tqdm(range(9), desc=f"处理{filename}的子任务", leave=False): features = model.predict(some_array, verbose=0)
效果说明
修改后,原本的多条小型Keras进度条会消失,只会显示你需要的文件级(或嵌套的子任务级)tqdm进度条,清晰展示整体处理进度。
内容的提问来源于stack exchange,提问作者Lorenzo Cutrupi
相关产品推荐
相关产品推荐

