2017-01-09 2 views
2

Если я правильно понимаю, в CNTK Python API Trainer.previous_minibatch_sample_count должен возвращать количество выборок (и NOT последовательностей) в предыдущей мини-партии. Я могу видеть, что это работает, как ожидалось в примере LanguageUnderstanding (т.е. количество образцов в последней minibatch действительно близка к minibatch_size, который используется):Какие единицы используются для определения размера эпохи CNTK?

minibatch_size = 70 
... 
Minibatch[ 1- 1]: loss = 4.857261 * 67, metric = 100.0% * 67 
Minibatch[ 2- 2]: loss = 4.835442 * 63, metric = 60.3% * 63 
Minibatch[ 3- 3]: loss = 4.798552 * 68, metric = 36.8% * 68 
Minibatch[ 4- 4]: loss = 4.751775 * 70, metric = 35.7% * 70 
Minibatch[ 5- 5]: loss = 4.678326 * 65, metric = 30.8% * 65 

Тем не менее, если я изменить (отдельный) пример SequenceClassification использовать ProgressPrinter (единственное изменение), я получаю следующий вывод:

minibatch_size = 200 
... 
Minibatch[ 1- 1]: loss = 1.611397 * 44, metric = 88.6% * 44 
Minibatch[ 2- 2]: loss = 1.611021 * 47, metric = 91.5% * 47 
Minibatch[ 3- 3]: loss = 1.608516 * 42, metric = 88.1% * 42 
Minibatch[ 4- 4]: loss = 1.611613 * 44, metric = 93.2% * 44 
Minibatch[ 5- 5]: loss = 1.610344 * 47, metric = 93.6% * 47 

в выводе выше, «число выборок» сообщает тренер (40-50), значительно меньше, чем minibatch_size (200). Я вручную подтвердил, что похоже, что Trainer возвращает количество SEQUENCES в мини-баре, а не образцы в приведенном выше случае.

Ожидается ли это? Если да, то в чем тут логика?

Я вижу, что некоторые учебники/примеры полагаются на значение, возвращаемое с Trainer.previous_minibatch_sample_count, чтобы определить конец эпохи ... Будет ли это всегда работать надежно?

ответ

3

Collating множественных ответов для разных людей в команде:

  • Тренер вернулся отсчет #labels который является #sequences в этом случае. Указанный minibatch_size относится к #samples (во всех потоках), а файл minibatch_source возвращает партию выборок, так что поток не превышает указанный счетчик. В этом случае поток признаков имеет несколько слов на выборку и, таким образом, определяет граничный порог.

  • Тренер возвращает # образцы, которые вызывают градиент, то есть количество меток. Можно также подумать о количестве предметов, суммированных в целевой функции.

Смежные вопросы