Я хочу реализовать функцию «возобновить обучение» для моей программы обучения.Но я не знаю, как правильно восстановить статус оптимизатора.
Моя программа выглядит следующим образом:
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)
Однако я считаю, что модель не была правильно возобновлена.Результаты довольно плохие.Я не уверен, но кажется, что параметры модели инициализируются случайным образом, а не загружаются из контрольной точки.
Итак, как правильно возобновить обучение с возобновлением статуса оптимизатора?