Как возобновить обучение со статусом оптимизатора в MxNet - PullRequest
0 голосов
/ 18 января 2019

Я хочу реализовать функцию «возобновить обучение» для моей программы обучения.Но я не знаю, как правильно восстановить статус оптимизатора.

Моя программа выглядит следующим образом:

opt = mx.optimizer(learning_rate=lr, ....)

ctx = [...]
sym = get_symbol() # The function define network
model = mx.mod.Module(sym=sym, ctx=ctx)

model.fit(...)

Теперь я хочу сохранить модель после тренировки 1k шагов, а затем возобновить еес контрольно-пропускного пункта.Поскольку статус оптимизатора также требуется восстановить (т. Е. Импульс параметров оптимизатора импульсов), я использую API mxnet.Module, а коды для сохранения и загрузки:

##### save #####
def batch_callback(params):
    if global_step == 1000:
        model.save_checkpoint(prefix, 0, save_optimizer_states=True)
        sys.exit(0)

.batch_callback зарегистрирован в функции model.fit ().

##### load #####
model = mx.mod.Module.load(prefix, 0, load_optimizer_states=True)
model.bind(...)
arg_params, aux_params=model.get_params()

model.fit(optimizer = opt, optimizer_params=('learning_rate', args.lr),
          arg_params=arg_params, aux_params=aux_params,
          batch_end_callback = batch_callback)

Однако я считаю, что модель не была правильно возобновлена.Результаты довольно плохие.Я не уверен, но кажется, что параметры модели инициализируются случайным образом, а не загружаются из контрольной точки.

Итак, как правильно возобновить обучение с возобновлением статуса оптимизатора?

1 Ответ

0 голосов
/ 14 февраля 2019

Я бы попытался использовать функцию load_checkpoint для этого.Посмотрите, как это делается в этом примере: https://mxnet.incubator.apache.org/versions/master/tutorials/basic/module.html#save-and-load

...