О tqdm в глубоком обучении

#python #deep-learning #tqdm

Вопрос:

Я использовал tqdm, чтобы показать процесс при запуске кода. Тем не менее, я потерпел неудачу, и результат на консоли остается тем же, что и в представлении

вот мой код:

 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()))  

Комментарии:

1. Тип набора данных-TensorDataset в pytorch

Ответ №1:

У вас есть переменная pbar, которая отвечает за индикатор выполнения цикла, определенный в цикле, также вы не обновляете его, поэтому вы делаете то, что на каждой итерации вы в основном воссоздаете индикатор выполнения, который находится на 0%

Что вам следует сделать, так это заставить tqdm отслеживать ход эпох в строке цикла for следующим образом:

 for epoch in tqdm(range(epoch_num)):  

Таким образом, он берет итерацию, повторяет ее и создает индикатор выполнения в соответствии с ней.

Также убедитесь, что вы импортируете tqdm следующим образом:

 from tqdm import tqdm  

Комментарии:

1. Да, да, ты прав. На этот раз я все сделал правильно, изменив код. Кстати, перебирать пакет данных на самом деле нормально.