【问题标题】:About tqdm in deep learning关于深度学习中的tqdm
【发布时间】:2021-10-30 03:41:28
【问题描述】:

我在运行代码时使用 tqdm 来显示进程。但是,我失败了,控制台上的结果保持不变 the consle view

这是我的代码:

    for epoch in range(epoch_num):
        print("Training epoch{}".format(epoch + 1))
        pbar = tqdm(train_dataloader)
        for step, batch in enumerate(pbar):
            if step == 5:
                torch.save(model.state_dict(), os.path.join(save_path, 'best_param.bin'))
                print(" Model Saved")
                print("Stopped Early")
                break
            model.train()
            inputs = {
                'input_ids': batch[0],
                'attention_mask': batch[1],
                'token_type_ids': batch[2],
                'labels': batch[3]
            }
            outputs = model(**inputs)
            loss, results = outputs
            optimizer.zero_grad()  # ??
            loss.backward()
            optimizer.step()
            loss_list.append(loss.item())
        pbar.set_description('Batch loss{:.3f}'.format(loss.item()))

【问题讨论】:

  • 数据集类型是pytorch中的TensorDataset

标签: python deep-learning tqdm


【解决方案1】:

你有负责循环中定义的循环进度条的 pbar 变量,你也没有更新它,所以你所做的是每次迭代你基本上是重新创建一个进度条,它是 0%

你应该做的是让 tqdm 像这样在 for 循环行中跟踪时期的进度:

for epoch in tqdm(range(epoch_num)):

这样它需要一个可迭代对象并对其进行迭代并根据它创建进度条。

还要确保您像这样导入 tqdm:

from tqdm import tqdm

【讨论】:

  • 是的,是的,你是对的。这次我通过更改代码来解决这个问题。顺便说一句,实际上迭代数据批是可以的。
猜你喜欢
  • 1970-01-01
  • 2017-12-25
  • 2017-06-17
  • 2015-08-17
  • 2016-07-25
  • 2020-03-06
  • 1970-01-01
  • 2018-11-05
  • 2020-04-17
相关资源
最近更新 更多