Примеры для учащихся CNTK

Я просматривал учебные пособия Microsft по Python CNTK для версии 2 Beta 9.0. Я не нашел хорошей документации с примерами рекомендуемых значений для передачи различным учащимся. Мне удалось заставить следующих учащихся работать над учебным курсом CNTK 103: Часть B - Прямая сеть с MNIST:

    lr_per_minibatch=learning_rate_schedule(0.2, UnitType.minibatch)
    trainer = Trainer(z, ce, pe, sgd(z.parameters, lr=lr_per_minibatch))

    lr_per_minibatch=learning_rate_schedule(0.2, UnitType.minibatch)
    trainer = Trainer(z, ce, pe, adagrad(z.parameters, lr=lr_per_minibatch))

    lr_per_minibatch=learning_rate_schedule(0.05, UnitType.minibatch)
    trainer = Trainer(z, ce, pe, adam_sgd(z.parameters, lr=lr_per_minibatch, momentum=momentum_as_time_constant_schedule(700) ))

    lr_per_minibatch=learning_rate_schedule(0.2, UnitType.minibatch)
    trainer = Trainer(z, ce, pe, nesterov(z.parameters, lr=lr_per_minibatch, momentum=momentum_as_time_constant_schedule(700) ))

    lr_per_minibatch=learning_rate_schedule(0.1, UnitType.minibatch)
    trainer = Trainer(z, ce, pe, rmsprop(z.parameters, lr=lr_per_minibatch, gamma=0.90, inc=0.03, dec=0.03, max=0.1, min=0.1 ))

Они работают, но есть ли у кого-нибудь хорошие примеры рекомендуемых значений параметров, которые получает каждый тренер?


person David Ruiz    schedule 02.02.2017    source источник


Ответы (1)


Для нынешних учащихся лучшие параметры зависят от данных и решаемой задачи. Поэтому давать хорошие рекомендации очень сложно. Один из типичных советов заключается в том, что если скорость обучения работает, то все меньшие скорости обучения будут работать, но вам придется работать дольше (то есть выполнять больше просмотров данных).

person Nikos Karampatziakis    schedule 03.02.2017
comment
Есть ли у вас какие-либо конкретные рекомендации по скорости обучения и импульсу при использовании оптимизатора adam_sgd? - person David Ruiz; 04.02.2017
comment
Нет, но я работаю над трейнером, у которого нет никаких параметров настройки. - person Nikos Karampatziakis; 04.02.2017
comment
Звучит здорово. Я бы порекомендовал кое-что еще. У меня есть опыт работы в области конечно-элементного анализа CFD. Иногда было полезно начать вычисления с одной Модели или Решателя, которые вначале сходились быстрее; а затем в середине моделирования измените его на другой, который был бы лучше или точнее для более поздних этапов моделирования. - person David Ruiz; 06.02.2017
comment
Хотя я не знаю никого, кто бы делал именно это в глубоком обучении, распространенной практикой, которая в некотором роде похожа, является снижение скорости обучения. то есть тренируйтесь в течение нескольких эпох с постоянной скоростью обучения, затем разделите скорость обучения на 10, тренируйтесь для нескольких эпох, разделите скорость обучения на 10 и так далее. Мы поддерживаем это через learning_rate_schedule. Если вы посмотрите на графики в статье resnet, вы сразу сможете определить, где скорость обучения была разделена на 10 по резкому падению погрешности. - person Nikos Karampatziakis; 08.02.2017