web-dev-qa-db-ja.com

tqdmにバーが表示されない

私はtqdmライブラリを使用していますが、進行状況バーは表示されませんが、代わりに次のような出力が表示され、反復が通知されます。

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
8
Matt

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)
9
DDGG