Уравнения CNTK create_trainer

В следующем обработчике CNTK create_trainer (на python) я пытаюсь понять, что означают эти два уравнения — я считаю, что это скорость обучения на мини-пакет, но остальная часть не комментируется Microsoft. Кто-нибудь понимает эти уравнения lr_per_mb и их значение?

lr_per_mb = [1,0]*80+[0,1]*40+[0,01]

lr_per_mb = [0,1]*1+[1,0]*80+[0,1]*40+[0,01]

def create_trainer (сеть, размер_минипакета, размер_эпохи, количество_битов_квантизации, размер_блока, прогрев, прогресс_принтер):

if network['name'] == 'resnet20': 
    lr_per_mb = [1.0]*80+[0.1]*40+[0.01]
elif network['name'] == 'resnet110': 
    lr_per_mb = [0.1]*1+[1.0]*80+[0.1]*40+[0.01]
else: 
    return RuntimeError("Unknown model name!")

person thrave    schedule 15.05.2017    source источник


Ответы (1)


Синтаксис [a1] * b + [a1] * d + a3 означает, что учащийся будет использовать скорость обучения a1 для первых b итераций (эпохи/образцы: в зависимости от настройки итерации вашего тренера), затем он будет использовать скорость обучения a2 для d итераций (эпох или образцов), а для оставшихся итераций скорость обучения должна быть a3.

Обычно вы начинаете с высокой скорости обучения, а по мере продолжения обучения скорость обучения снижается. Это то, что вы видите в коде выше. Кроме того, для двух сетей скорость обучения различна. Много усилий уходит на поиск правильных параметров скорости обучения. Следовательно, использование некоторых чисел в примерах в качестве начальной отправной точки потенциально может сэкономить много вашего времени.

person Sayan Pathak    schedule 16.05.2017
comment
Отличный ответ! Я проголосовал за вас, но, думаю, у меня недостаточно высокая репутация, чтобы это показать! - person thrave; 16.05.2017