tqdm_notebook 描述被截断

tqdm_notebook description is truncated

我正在使用 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))

最近一直在搜索这个问题,幸好tqdm从4.28.1版本开始已经解决了,也就是available on Pypi

参考this commit

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

现在,您的描述似乎很长,将描述长度设置为 'initial' 可能会使您最终得到一个 1px 宽的进度条。

如果你需要一个更大的进度条,最简单的方法是用 Label 小部件分两行显示,然后直接改变它的值

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的代码here,这样tqdm widgets就是一个带有文本、IntProgres、再次文本的Hbox。

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

完成后,您可以按照与here相同的方式更新描述 但 here 描述