簡體   English   中英

tqdm 不顯示條形圖

[英]tqdm not showing bar

我正在使用 tqdm 庫,它沒有給我進度條,而是給了我 output ,它看起來像這樣,它只是告訴我迭代:

251it [01:44, 2.39it/s]

知道為什么代碼會這樣做嗎? 我想這可能是因為我給它傳遞了一個生成器,但我過去再次使用過有效的生成器。 我以前從來沒有真正弄亂過 tdqm 格式。 以下是部分源代碼:

train_iter = zip(train_x, train_y) #train_x and train_y are just lists of elements
....
def train(train_iter, model, criterion, optimizer):
    model.train()
    total_loss = 0
    for x, y in tqdm(train_iter):
        x = x.transpose(0, 1)
        y = y.transpose(0, 1)
        optimizer.zero_grad()
        bloss = model.forward(x, y, criterion)   
        bloss.backward()
        torch.nn.utils.clip_grad_norm(model.parameters(), args.clip)
        optimizer.step()        
        total_loss += bloss.data[0]
    return total_loss

tqdm需要知道將執行多少迭代(總量)以顯示進度條。

你可以試試這個:

from tqdm import tqdm

train_x = range(100)
train_y = range(200)

train_iter = zip(train_x, train_y)

# Notice `train_iter` can only be iter over once, so i get `total` in this way.
total = min(len(train_x), len(train_y))

with tqdm(total=total) as pbar:
    for item in train_iter:
        # do something ...
        pbar.update(1)

用長度填充“總”參數對我有用。 現在出現進度條。

from tqdm import tqdm

# ...
for imgs, targets in tqdm( train_dataloader, total=len(train_dataloader)):
   # ...

@Dogus 的答案是更自然地使用 tqdm,但您需要確保您的數據加載器(如果它是自定義迭代器)也公開len方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM