Что означает «Тест эпохи [число]» в Mozilla DeepSpeech? - PullRequest
0 голосов
/ 30 июня 2018

Что означает «Тест эпохи [число]» в Mozilla DeepSpeech?

В следующем примере написано Test of Epoch 77263, хотя в моем понимании должна быть только 1 эпоха, поскольку я дал --display_step 1 --limit_train 1 --limit_dev 1 --limit_test 1 --early_stop False --epoch 1 в качестве аргументов:

dernoncourt@ilcomp:~/asr/DeepSpeech$ ./DeepSpeech.py --train_files data/common-voice-v1/cv-valid-train.csv,data/common-voice-v1/cv-other-train.csv --dev_files data/common-voice-v1/cv-valid-dev.csv --test_files data/common-voice-v1/cv-valid-test.csv --decoder_library_path /asr/DeepSpeech/libctc_decoder_with_kenlm.so --fulltrace True --display_step 1  --limit_train 1  --limit_dev 1  --limit_test 1 --early_stop False --epoch 1
W Parameter --validation_step needs to be >0 for early stopping to work
I Test of Epoch 77263 - WER: 1.000000, loss: 60.50202560424805, mean edit distance: 0.894737
I --------------------------------------------------------------------------------
I WER: 1.000000, loss: 58.900837, mean edit distance: 0.894737
I  - src: "how do you like her"
I  - res: "i "
I --------------------------------------------------------------------------------
I WER: 1.000000, loss: 60.517113, mean edit distance: 0.894737
I  - src: "how do you like her"
I  - res: "i "
I --------------------------------------------------------------------------------
I WER: 1.000000, loss: 60.668221, mean edit distance: 0.894737
I  - src: "how do you like her"
I  - res: "i "
I --------------------------------------------------------------------------------
I WER: 1.000000, loss: 61.921925, mean edit distance: 0.894737
I  - src: "how do you like her"
I  - res: "i "
I --------------------------------------------------------------------------------

1 Ответ

0 голосов
/ 02 июля 2018

Объяснение Тилмана Кэмпа :

Это на самом деле не ошибка, так как текущая эпоха вычисляется на основе ваших текущих параметров и сохраненных снимков глобальных шаг кол. Внимательно посмотрите на этот отрывок:

# Number of GPUs per worker - fixed for now by local reality or cluster setup
gpus_per_worker = len(available_devices)

# Number of batches processed per job per worker
batches_per_job  = gpus_per_worker * max(1, FLAGS.iters_per_worker)

# Number of batches per global step
batches_per_step = gpus_per_worker * max(1, FLAGS.replicas_to_agg)

# Number of global steps per epoch - to be at least 1
steps_per_epoch = max(1, model_feeder.train.total_batches // batches_per_step)

# The start epoch of our training
# Number of GPUs per worker - fixed for now by local reality or cluster setup
gpus_per_worker = len(available_devices)

# Number of batches processed per job per worker
batches_per_job  = gpus_per_worker * max(1, FLAGS.iters_per_worker)

# Number of batches per global step
batches_per_step = gpus_per_worker * max(1, FLAGS.replicas_to_agg)

# Number of global steps per epoch - to be at least 1
steps_per_epoch = max(1, model_feeder.train.total_batches // batches_per_step)

# The start epoch of our training
self._epoch = step // steps_per_epoch

Так что получается, что ваш размер набора во время тренировки отличается от ваш текущий размер набора. Таким образом, странный номер эпохи.

Упрощенный пример (без запутанного размера партии): если вы когда-то тренировались 5 эпох из 1000 учебных комплектов, вы получили 5000 «глобальных шагов» (сохраняется как число в вашем снимке). После этого обучения вы измените параметры командной строки на размер 1 (ваш --limit_ * параметры). «Внезапно» вы получите отображение эпохи 5000, потому что 5000 глобальные шаги означают применение набора данных размером 1 5000 раз.

Уберите: используйте аргумент --checkpoint_dir, чтобы избежать подобных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...