Я получил следующее исключение при вызове 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()
Использование с глобальной целевой функции и модели, но получить ту же ошибку. Кроме того, в упомянутом коде в моем вопросе я создал ту же функцию критерия, что и функция, которая была сохранена. Не могли бы вы порекомендовать какой-нибудь образец кода, который отлично работает как-то, сохранить тренера, а после некоторых вычислений в произвольной точке восстановить этот тренер? – OmG
Здесь есть код, который пользователи restore_from_checkpoint здесь. https://github.com/Microsoft/CNTK/blob/3ab246855bff036eefe61d30658be5112567f492/bindings/python/cntk/tests/distributed_test.py –
этот пример очень плохой, поскольку он неприменим! после строки контрольной точки спасения, восстановил контрольную точку, которая не является применимым случаем !!! Я делал это раньше, и это работает, но не применимо! В большинстве случаев я хочу восстановить контрольную точку, когда мне это нужно, а не после сохранения контрольной точки !!! – OmG