tqdm_notebook说明被截断

时间:2018-06-26 23:35:19

标签: tqdm

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

enter image description here

1 个答案:

答案 0 :(得分:2)

我最近一直在搜索此问题,幸运的是,自4.28.1版本available on Pypi起,它已经在tqdm中得以解决

请参见this commit以供参考

也就是说,进度条是ipywidgets中的窗口小部件,它具有专用的进度条窗口小部件,无法正式更改大小。有关小部件说明的更多信息,请参见here

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

如果需要更大的进度条,最简单的方法是使用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小部件成为具有文本,IntProgres和文本的Hbox。

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

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