#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. Да, да, ты прав. На этот раз я все сделал правильно, изменив код. Кстати, перебирать пакет данных на самом деле нормально.