0
我在调用CNTK中的trainer.restore_from_checkpoint
时遇到以下异常。'此功能与从CNTK中的检查点恢复的功能不同(同构)
'此功能与从检查点恢复的功能不等效(同构)。
我的还原代码出现在下面。这些与创建培训师的结构相同,并且如in this document所述通过trainer.save_checkpoint("trainer.dnn")
保存trainer.dnn
。
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