индикатор выполнения tqdm тасуется после завершения программы - PullRequest
0 голосов
/ 13 января 2020

Я использую 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))

Порядок этих баров правильно вышел во время программы, но они перетасовываются сразу после окончания тренировки. Что не так? Заранее спасибо!

...