[英]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.