radam+lookahead optimizer

torch 中 optimizer的类

optimizer的类中的link optimizer详解

主要说明optimizer里面的param_groups这个属性,param_group是一个list,在里面存放着字典 dict,dict中的key包括下面的几个部分:
在这里插入图片描述

lookahead 源码解析

lookahead 使用的是向前k步,然后倒退一步,这可以理解为,向前探索的过程中可能会遇到死胡同,这时候有一个小伙伴站在了你俩中间某个位置等待,你找不到出路时可以回去找他。

class Lookahead(Optimizer):
    def __init__(self, optimizer, alpha=0.5, k=6):
        # alpha 控制小伙伴距离我有多远,1时紧跟我,0时在原点等待我
        if not 0.0 <= alpha <= 1.0:
            raise ValueError(f'Invalid slow update rate: {alpha}')
        if not 1 <= k:
            raise ValueError(f'Invalid lookahead steps: {k}')

        self.optimizer = optimizer
        self.param_groups = self.optimizer.param_groups
        self.alpha = alpha
        self.k = k
        for group in self.param_groups:
            group["step_counter"] = 0
        # 小伙伴对我的权重进行复制,保持requires_grad = False(detach就能完成)
        self.slow_weights = [
                [p.clone().detach() for p in group['params']]
            for group in self.param_groups]

        for w in it.chain(*self.slow_weights):
            w.requires_grad = False
        self
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值