2017-01-21 13 views
0

Я получил следующее исключение при вызове trainer.restore_from_checkpoint в CNTK.«Эта» функция не эквивалентна (изоморфна) функции, восстановленной с контрольной точки в CNTK

«Эта» функция не эквивалентна (изоморфна) функции, восстановленной с контрольной точки.

Восстановительный код приведен ниже. Это то же самое, что и структура создания тренера и сохранение trainer.dnn на trainer.save_checkpoint("trainer.dnn"), как упомянуто in this document.

def evaluate(reader, model): 
    criterion = create_criterion_function(model) 
    criterion.replace_placeholders({criterion.placeholders[0]: Input(input_dim), 
            criterion.placeholders[1]: Input(label_dim)}) 

    # training config 
    epoch_size = 34 
    minibatch_size = 17 

    # LR schedule over epochs 
    lr_per_sample = [0.003]*4+[0.0015]*24+[0.0003] 
    lr_per_minibatch = [x * minibatch_size for x in lr_per_sample] 
    lr_schedule = learning_rate_schedule(lr_per_minibatch, UnitType.minibatch, epoch_size) 

    # Momentum 
    momentum_as_time_constant = momentum_as_time_constant_schedule(70) 

    learner = adam_sgd(criterion.parameters, 
         lr=lr_schedule, momentum=momentum_as_time_constant, 
         low_memory=True, 
         gradient_clipping_threshold_per_sample=15, gradient_clipping_with_truncation=True) 

    trainer = Trainer(model, criterion.outputs[0], criterion.outputs[1], learner) 
    trainer.restore_from_checkpoint("trainer.dnn") 

def do_test(): 
    reader = create_reader('Test.txt', is_training=False) 
    model = create_model() 
    evaluate(reader, model) 

do_test() 

ответ

0

Существует два способа контрольно-пропускных пунктов.

  1. Модель проверки: контрольная точка только модель, затем при восстановлении модели создайте новый тренажер.

  2. Тренерская проверка: контрольная точка, которая сохранит модель, и функции критерия. Восстановите тренера с контрольной точки.

Эта ошибка может прийти, потому что у вас есть функция критерия передается тренеру, а затем восстановление из предыдущей контрольной точки, которая имеет другую функцию.

Некоторые соответствующий код here

+0

Использование с глобальной целевой функции и модели, но получить ту же ошибку. Кроме того, в упомянутом коде в моем вопросе я создал ту же функцию критерия, что и функция, которая была сохранена. Не могли бы вы порекомендовать какой-нибудь образец кода, который отлично работает как-то, сохранить тренера, а после некоторых вычислений в произвольной точке восстановить этот тренер? – OmG

+0

Здесь есть код, который пользователи restore_from_checkpoint здесь. https://github.com/Microsoft/CNTK/blob/3ab246855bff036eefe61d30658be5112567f492/bindings/python/cntk/tests/distributed_test.py –

+0

этот пример очень плохой, поскольку он неприменим! после строки контрольной точки спасения, восстановил контрольную точку, которая не является применимым случаем !!! Я делал это раньше, и это работает, но не применимо! В большинстве случаев я хочу восстановить контрольную точку, когда мне это нужно, а не после сохранения контрольной точки !!! – OmG

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

  • Нет связанных вопросов^_^