我正在研究 Pytorchlightning,tqdm 的进度条有很多问题,它不断地从短到长来回调整大小,让阅读日志文本变得非常不愉快,我意识到进度条并不是真正必要的,我只想保留当前epoch、当前batch、accuracy、loss等信息
根据我的搜索,您似乎可以禁用整个 tqdm 显示(进度条和文本),但我如何才能有选择地仅禁用进度条而不禁用文本?
最佳答案
tqdm
禁用“仪表”(同时保留统计显示)的方法是设置 ncols=0
和 dynamic_ncols=False
(参见 tqdm documentation)。
在 pytorch_lightning
中自定义默认进度条行为的方法是传递自定义 ProgressBar
在构建 Trainer
时作为回调。
将两者放在一起,如果你想在训练期间修改进度条,你可以执行如下操作:
import pytorch_lightning as pl
from pytorch_lightning.callbacks import ProgressBar
class MeterlessProgressBar(ProgressBar):
def init_train_tqdm(self):
bar = super().init_train_tqdm()
bar.dynamic_ncols = False
bar.ncols = 0
return bar
bar = MeterlessProgressBar()
trainer = pl.Trainer(callbacks=[bar])
您可以通过重写:init_sanity_tqdm
、init_predict_tqdm
、init_validation_tqdm
和 分别自定义健全性检查、预测、验证和测试code>init_test_tqdm
分别。 (如果您想要一种快速而肮脏的方式对所有进度条执行某些操作,您可以考虑改写 _update_bar
方法。)
关于python - 如何禁用 tqdm 的进度条并仅保留 Pytorch Lightning(或一般的 tqdm)中的文本信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68427465/