pytorch-fineturn the network and adjust learning rate


1. 

ignored_params = list(map(id, model.fc.parameters()))
base_params = filter(lambda p: id(p) not in ignored_params, model.parameters())


optimizer = torch.optim.SGD([
            {'params': base_params},
            {'params': model.fc.parameters(), 'lr': opt.lr}
        ], lr=opt.lr*0.1, momentum=0.9)



2. adjust learning rate


def adjust_lr(optimizer,  e, base_lr=base_lr, step_size=step_size):

    _lr = base_lr * 0.1 ** ( e // step_size)

    for param_group in optimizer.param_groups:

          param_group['lr'] = _ lr

     return optimizer

def adjust_lr(optimizer,  e, step_size=step_size, decay=0.1):

    if e==0 or e%step_size:

          return optimizer

    for param_group in optimizer.param_groups:

          param_group['lr']  *= decay

          return optimizer


3. lr_scheduler


scheduler = optim.lr_scheduler( optimizer, xxx)


scheduler.step()  # per epoch update onece


for I in range(epoch):

    scheduler.step()

    train(i)

    valid()


4. add_param_group

optimizer.add_param_group()





------------------------------------------reference-----------------------------

1. https://discuss.pytorch.org/t/how-to-perform-finetuning-in-pytorch/419/7

2. https://discuss.pytorch.org/t/adaptive-learning-rate/320/4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值