【问题标题】:How can i detect if a callback is triggered in pytorch?如何检测是否在 pytorch 中触发了回调?
【发布时间】:2021-02-09 14:36:38
【问题描述】:

我正在微调 BERT 模型。首先,我想冻结图层并进行一些训练。当某个回调被触发时(比如说ReduceLROnPlateau)我想解冻层。我该怎么做?

【问题讨论】:

    标签: python nlp pytorch bert-language-model


    【解决方案1】:

    恐怕 PyTorch 中的学习率调度程序不提供挂钩。查看ReduceLROnPlateauhere的实现,当调度器被触发时,两个属性被重置(i.e.当它识别一个平台并降低学习率时):

        if self.num_bad_epochs > self.patience:
            self._reduce_lr(epoch)
            self.cooldown_counter = self.cooldown
            self.num_bad_epochs = 0
    

    基于此,您可以包装您的调度程序步骤调用,并通过检查 scheduler.cooldown_counter == scheduler.cooldownscheduler.num_bad_epochs == 0 是否为真来确定是否触发了 _reduce_lr

    【讨论】:

    • 谢谢。实际上,看起来我不必做这样的事情。我可以检查 num_bad_epochs 是否等于我想要的耐心。
    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多