Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tqdm使打印进度条保持在同一行中_Python_Pytorch_Tqdm - Fatal编程技术网

Python tqdm使打印进度条保持在同一行中

Python tqdm使打印进度条保持在同一行中,python,pytorch,tqdm,Python,Pytorch,Tqdm,我正在尝试训练一个网络,但“tqdm”的进度条工作不正常,它在同一行中一个接一个地打印新的进度条,我不知道为什么会发生这种情况,但据我所知,我应该在for循环初始化中调用tqdm,就这样,此外,进度条上的估计时间似乎可能已关闭,这是否也与模型的实现方式有关,当我运行代码时,它不会分配GPU的整个VRAM。 我的代码: 输出: 当您使用此命令时会发生什么:enumerate(tqdm(数据加载器))替代?同样的,我尝试在pycharm中运行相同的代码,但它似乎运行良好,我不知道我的shell出了什

我正在尝试训练一个网络,但“tqdm”的进度条工作不正常,它在同一行中一个接一个地打印新的进度条,我不知道为什么会发生这种情况,但据我所知,我应该在for循环初始化中调用tqdm,就这样,此外,进度条上的估计时间似乎可能已关闭,这是否也与模型的实现方式有关,当我运行代码时,它不会分配GPU的整个VRAM。 我的代码:

输出:

当您使用此命令时会发生什么:
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