Python tqdm使打印进度条保持在同一行中
我正在尝试训练一个网络,但“tqdm”的进度条工作不正常,它在同一行中一个接一个地打印新的进度条,我不知道为什么会发生这种情况,但据我所知,我应该在for循环初始化中调用tqdm,就这样,此外,进度条上的估计时间似乎可能已关闭,这是否也与模型的实现方式有关,当我运行代码时,它不会分配GPU的整个VRAM。 我的代码: 输出:Python tqdm使打印进度条保持在同一行中,python,pytorch,tqdm,Python,Pytorch,Tqdm,我正在尝试训练一个网络,但“tqdm”的进度条工作不正常,它在同一行中一个接一个地打印新的进度条,我不知道为什么会发生这种情况,但据我所知,我应该在for循环初始化中调用tqdm,就这样,此外,进度条上的估计时间似乎可能已关闭,这是否也与模型的实现方式有关,当我运行代码时,它不会分配GPU的整个VRAM。 我的代码: 输出: 当您使用此命令时会发生什么:enumerate(tqdm(数据加载器))替代?同样的,我尝试在pycharm中运行相同的代码,但它似乎运行良好,我不知道我的shell出了什
当您使用此命令时会发生什么:
enumerate(tqdm(数据加载器))
替代?同样的,我尝试在pycharm中运行相同的代码,但它似乎运行良好,我不知道我的shell出了什么问题。也许tqdm的自动导入tqdm
会对您有所帮助
import torch
import torch.nn as nn
from tqdm import tqdm
def loss_fn(outputs, targets):
return nn.BCEWithLogitsLoss()(outputs, targets.view(-1, 1))
def train_fn(data_loader, model, optimizer, device, scheduler):
model.train()
for bi, d in tqdm(enumerate(data_loader), total=len(data_loader) , leave = False):
ids = d["ids"]
token_type_ids = d["token_type_ids"]
mask = d["mask"]
targets = d["targets"]
ids = ids.to(device, dtype=torch.long)
token_type_ids = token_type_ids.to(device, dtype=torch.long)
mask = mask.to(device, dtype=torch.long)
targets = targets.to(device, dtype=torch.float)
optimizer.zero_grad()
outputs = model(ids=ids, mask=mask, token_type_ids=token_type_ids)
loss = loss_fn(outputs, targets)
loss.backward()
optimizer.step()
scheduler.step()
def eval_fn(data_loader, model, device):
model.eval()
fin_targets = []
fin_outputs = []
with torch.no_grad():
for bi, d in tqdm(enumerate(data_loader), total=len(data_loader)):
ids = d["ids"]
token_type_ids = d["token_type_ids"]
mask = d["mask"]
targets = d["targets"]
ids = ids.to(device, dtype=torch.long)
token_type_ids = token_type_ids.to(device, dtype=torch.long)
mask = mask.to(device, dtype=torch.long)
targets = targets.to(device, dtype=torch.float)
outputs = model(ids=ids, mask=mask, token_type_ids=token_type_ids)
fin_targets.extend(targets.cpu().detach().numpy().tolist())
fin_outputs.extend(torch.sigmoid(outputs).cpu().detach().numpy().tolist())
return fin_outputs, fin_targets