Я использую tqdm
индикатор прогресса для каждой эпохи обучения модели. Однако, когда моя программа заканчивается, все индикаторы выполнения перетасовываются следующим образом:
Epoch 8/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [13:20<00:00, 7.48s/it, train loss 1.0418. val loss: 1.0842.]
Epoch 1/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [20:35<00:00, 11.54s/it, train loss 1.3679. val loss: 1.3473.]
Epoch 13/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [08:15<00:00, 4.63s/it, train loss 0.9399. val loss: 0.8922.]
Epoch 20/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [01:01<00:00, 1.75it/s, train loss 0.8326. val loss: 0.8565.]
Epoch 16/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [05:09<00:00, 2.89s/it, train loss 0.8741. val loss: 0.8570.]
Epoch 15/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [06:11<00:00, 3.48s/it, train loss 0.8781. val loss: 0.8633.]
Epoch 11/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [10:17<00:00, 5.77s/it, train loss 0.9815. val loss: 0.9552.]
Epoch 5/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [16:28<00:00, 9.23s/it, train loss 1.1962. val loss: 1.2021.]
Epoch 7/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [14:22<00:00, 8.06s/it, train loss 1.0579. val loss: 1.0612.]
Epoch 19/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [02:02<00:00, 1.14s/it, train loss 0.8459. val loss: 0.8525.]
Epoch 14/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [07:13<00:00, 4.05s/it, train loss 0.9143. val loss: 0.8976.]
Epoch 2/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [19:35<00:00, 10.98s/it, train loss 1.3247. val loss: 1.2361.]
Epoch 17/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [04:06<00:00, 2.31s/it, train loss 0.8525. val loss: 0.8462.]
Epoch 10/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [11:19<00:00, 6.35s/it, train loss 1.0069. val loss: 0.9366.]
Epoch 9/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [12:20<00:00, 6.92s/it, train loss 1.0177. val loss: 0.9336.]
Epoch 3/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [18:31<00:00, 10.39s/it, train loss 1.2812. val loss: 1.2236.]
Epoch 18/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [03:03<00:00, 1.72s/it, train loss 0.8444. val loss: 0.8521.]
Epoch 6/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [15:24<00:00, 8.64s/it, train loss 1.1560. val loss: 1.0494.]
Epoch 4/20: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [17:30<00:00, 9.82s/it, train loss 1.2579. val loss: 1.1730.]
Epoch 12/20: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 107/107 [09:17<00:00, 5.21s/it, train loss 0.9491. val loss: 0.9757.]
Вот мой фрагмент кода (без большей части кода) с использованием tqdm
:
class Engine(object):
def train(self):
self.progress = tqdm(desc="Epoch {}/{}".format(cur_epoch + 1,
total_epochs), total=len(data))
for _, sample in enumerate(data):
self.progress.set_postfix_str("train loss: {:.4f}.".format(batch_loss))
self.progress.update(1)
self.progress.set_postfix_str("train loss {:.4f}.".format(train_loss))
def evaluate(self):
for _, sample in enumerate(data):
self.progress.set_postfix_str(self.progress.postfix\
+ " val loss: {:.4f}.".format(val_loss))
Порядок этих баров правильно вышел во время программы, но они перетасовываются сразу после окончания тренировки. Что не так? Заранее спасибо!