Python ';这';函数与从CNTK中的检查点还原的函数不等价(同构)
我在调用Python ';这';函数与从CNTK中的检查点还原的函数不等价(同构),python,restore,cntk,Python,Restore,Cntk,我在调用trainer时遇到以下异常。从CNTK中的\u检查点还原\u “This”函数与从检查点还原的函数不同(同构) 我的恢复代码如下所示。这些与通过trainer.save\u检查点(“trainer.dnn”)创建培训师和保存trainer.dnn的结构相同 检查点有两种方式 模型检查点:仅检查模型,然后在恢复模型时,创建新的培训师 培训师检查点:检查将保存模型和标准功能的培训师。从检查点恢复培训师 此错误可能是因为您有一个Criteria函数被传递给培训师,然后从以前具有不同函数的检查
trainer时遇到以下异常。从CNTK中的\u检查点还原\u
“This”函数与从检查点还原的函数不同(同构)
我的恢复代码如下所示。这些与通过trainer.save\u检查点(“trainer.dnn”)
创建培训师和保存trainer.dnn
的结构相同
检查点有两种方式
模型检查点:仅检查模型,然后在恢复模型时,创建新的培训师
培训师检查点:检查将保存模型和标准功能的培训师。从检查点恢复培训师
此错误可能是因为您有一个Criteria函数被传递给培训师,然后从以前具有不同函数的检查点恢复
一些相关代码使用全局标准函数和模型,但得到相同的错误。另外,在我问题中提到的代码中,我创建了与存储的函数相同的标准函数。你能推荐一些运行良好的示例代码吗?存储培训师,经过一些计算后,在任意点还原该培训师?这里有一些代码,用户可以从\u检查点还原\u。这个例子很糟糕,因为它不适用!保存一行检查点后,恢复了不适用的检查点!!!我以前一直这样做,它的工作,但不适用!在大多数情况下,我希望在需要时恢复检查点,而不是在保存检查点之后!!!谢谢你,天哪。我们正在github问题()中对此进行跟踪。谢谢你和我们一起工作。
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()