『OCR_recognition』crnn-finetune 模型学习率调整策略

本文探讨了如何在深度学习模型中使用不同学习率调整策略,如Adam优化器针对不同层级设置特定速率,并详细解释了如何在训练过程中仅更新特定层的lr。此外,还介绍了CNN层的冻结技术,以提高训练效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、网络模型

CRNN网络模型结构

二、不同层设置不同学习率

以优化器 Adam 为例:

# 不同层设置不同的学习率
train_params = list(map(id,crnn.rnn.parameters()))
rest_params = filter(lambda x:id(x) not in train_params, crnn.parameters())

# loss averager
loss_avg = utils.averager()  # 对loss取平均对象

# setup optimizer
if opt.adam:
    # 对不同层设置不同学习率
    # optimizer = optim.Adam(crnn.parameters(), lr=opt.lr, betas=(opt.beta1, 0.999))
    # optimizer = torch.nn.DataParallel(optimizer, device_ids=range(opt.ngpu))
    ### weight_decay 防止过拟合的参数
    optimizer = optim.Adam([
    	{'params':crnn.rnn[0].rnn.parameters(), 'lr':0.0000001, 'betas':(0.5,0.999)},
    	{'params':crnn.rnn[0].embedding.parameters(), 'lr':0.0000001, 'betas':(0.5,0.999)},
    	{'params':crnn.rnn[1].rnn.parameters(), 'lr':0.0000001, 'betas':(0.5,0.999)},
    	{'params':crnn.rnn[1].embedding.parameters(), 'lr':opt.lr, 'betas':(0.5,0.999)},
    	{'params':rest_params, 'lr':opt.lr, 'betas':(0.5,0.999)}
    ])

三、训练过程更新学习率

上述我们只对 rnn 网络进行训练,并对最后一层进行 lr 的更新。

def adjust_learning_rate(optimizer, epoch):
    """Sets the learning rate to the initial LR decayed by 10 every 5 epochs"""
    lr = opt.lr * (0.1 ** (epoch // 5))
    # for param_group in optimizer.param_groups: 	# 每一层的学习率都会下降
    optimizer.param_groups[3]['lr'] = lr
 
for epoch in range(opt.nepoch):
    # 每 5 个 epoch 修改一次学习率(只修改最后一个全连接层)
    adjust_learning_rate(optimizer, epoch)

四、CNN层冻结

for p in crnn.named_parameters():
	p[1].requires_grad = True
	# 训练 rnn 层 
	if 'rnn' in p[0]:   # 训练最后一层  #rnn  rnn.1.embedding
		p[1].requires_grad = True
	else:
		p[1].requires_grad = False	# 冻结模型层
	crnn.train()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

libo-coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值