繁体   English   中英

当 Jupyter 内核突然死亡时,我可以恢复 Python 对象吗?

[英]Can I recover Python objects when Jupyter kernel suddenly died?

我正在用 Python 运行机器学习脚本。 运行 30 小时后直到模型训练,在预测期间的下一个代码中,内核根据 Jupyter notebook 的提示死亡。

当我点击“OK”时,我继续在下一个单元格上运行,但对象丢失了! 就像,它显示为“name_of_my_object 未定义”的错误。 甚至导入模块的功能都丢失了……一切都需要运行才能再次工作。

我真的别无选择,只能重新运行整个过程吗?

我尝试恢复到最后一个检查点,我不知道这有什么特别的帮助。 当我这样做时,它仍然相同,没有对象和模块在工作。

您加载检查点的确切脚本将取决于您使用的库。

例如在 pytorch 中:

with open(os.path.join(output, "log.csv"), "a") as f:
    epoch_resume = 0
    bestLoss = float("inf")
    try:
        # Attempt to load checkpoint
        checkpoint = torch.load(os.path.join(output, "checkpoint.pt"))
        model.load_state_dict(checkpoint['state_dict'])
        optim.load_state_dict(checkpoint['opt_dict'])
        scheduler.load_state_dict(checkpoint['scheduler_dict'])
        epoch_resume = checkpoint["epoch"] + 1
        bestLoss = checkpoint["best_loss"]
        f.write("Resuming from epoch {}\n".format(epoch_resume))
    except FileNotFoundError:
        f.write("Starting run from scratch\n")

    for epoch in range(epoch_resume, num_epochs):
        print("Epoch #{}".format(epoch), flush=True)
        # your model training code
                    # Save checkpoint
        save = {
            'epoch': epoch,
            'state_dict': model.state_dict(),
            'best_loss': bestLoss,
            'loss': loss,
            'opt_dict': optim.state_dict(),
            'scheduler_dict': scheduler.state_dict(),
        }
        torch.save(save, os.path.join(output, "checkpoint.pt"))
        if loss < bestLoss:
            torch.save(save, os.path.join(output, "best.pt"))
            bestLoss = loss

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM