4

tqdm_notebook用来显示进度,并更新描述以跟踪迭代次数的损失。如何使描述不被截断(附在下面的图片)。

我使用以下方法定义ebar = tqdm_notebook(range(NUM_EPOCHS))和更新描述:

ebar.set_description('c_loss: {:.5f}, r_loss: {:.5f}, v_loss: {:.5F}'.format(av_class_loss,
                                                                             av_recon_loss,
                                                                             av_valid_loss))

在此处输入图像描述

4

1 回答 1

2

我最近一直在搜索这个问题,幸运的是它实际上已经在 tqdm 中解决了,因为版本 4.28.1可以在 Pypi 上找到

请参阅此提交以供参考

也就是说,进度条是一个小部件,ipywidgets它有一个不能正式改变大小的专用进度条小部件。有关小部件描述的更多信息,请参见此处

现在,您的描述似乎很长,将描述长度设置为“初始”可能会使您最终得到一个 1 像素宽的进度条。

如果您需要获得更大的进度条,最简单的方法是两行显示,带有标签小部件,并直接更改其值

from ipywidgets import HBox, Label, IntProgress
import time
from IPython.display import display
from tqdm import tqdm_notebook as tqdm
a = Label('A too long description')
display(a)
b = tqdm(range(100))
for i in b:
    time.sleep(0.1)
    a.value = 'a too long descriptio' + 'o'*i +'n'

如果你真的需要把所有东西都放在一行中,你可以在这里修改 tqdm 的代码,使 tqdm 小部件是一个带有文本的 Hbox,IntProgres,再次文本。

ptext = HTML()
pdesc = HTML()
container = HBox(children=[pdesc, pbar, ptext])

完成后,您可以以与此处相同的方式更新描述, 但此处用于描述

于 2018-11-19T10:49:04.113 回答