百度智能云windows系统服务器建站wordpress 技术分析
web/
2025/10/9 14:01:46/
文章来源:
百度智能云windows系统服务器建站,wordpress 技术分析,萍乡做网站的公司,临夏做网站一、get_scheduler实现warmup
1、warmup基本思想
Warmup#xff08;预热#xff09;是深度学习训练中的一种技巧#xff0c;旨在逐步增加学习率以稳定训练过程#xff0c;特别是在训练的早期阶段。它主要用于防止在训练初期因学习率过大导致的模型参数剧烈波动或不稳定。…一、get_scheduler实现warmup
1、warmup基本思想
Warmup预热是深度学习训练中的一种技巧旨在逐步增加学习率以稳定训练过程特别是在训练的早期阶段。它主要用于防止在训练初期因学习率过大导致的模型参数剧烈波动或不稳定。预热阶段通常是指在训练开始时通过多个步长逐步将学习率从一个较低的值增加到目标值通常是预定义的最大学习率。
2、warmup基本实现
from transformers import get_schedulerscheduler get_scheduler(namecosine, # 可以选择 linear, cosine, polynomial, constant, constant_with_warmupoptimizeroptimizer,num_warmup_steps100, # 预热步数num_training_stepsnum_training_steps # 总的训练步数
)#linear线性学习率下降
#cosine余弦退火
#polynomial多项式衰减
#constant常数学习率
#constant_with_warmup预热后保持常数# 上述代码等价于
from transformers import get_cosine_scheduler_with_warmupscheduler get_cosine_scheduler_with_warmup(optimizeroptimizer,num_warmup_steps100, # 预热步数num_training_stepsnum_training_steps # 总的训练步数
)# 同理等价于linear, polynomial, constant分别等价于
from transformers import (get_constant_schedule, get_polynomial_decay_schedule_with_warmup, get_linear_schedule_with_warmup) 二、各种warmup策略学习率变化规律
1、get_constant_schedule学习率变化规律 2、get_cosine_schedule_with_warmup学习率变化规律 3、get_cosine_with_hard_restarts_schedule_with_warmup学习率变化规律 4、get_linear_schedule_with_warmup学习率变化规律 5、get_polynomial_decay_schedule_with_warmup学习率变化规律power2, power1类似于linear 6、注意事项
如果网络中不同框架采用不同的学习率上述的warmup策略仍然有效如图二、5中所示 给schduler设置的number_training_steps一定要和训练过程相匹配如下所示。
7、可视化学习率过程
import matplotlib.pyplot as plt
from transformers import get_scheduler
from torch.optim import AdamW
import torch
import math# 定义一些超参数learning_rate 1e-3 # 初始学习率# 假设有一个模型
model torch.nn.Linear(10, 2)# 获得训练总的步数
epochs 50
batch_size 32
#train_loader ***
#num_train_loader len(train_loader)
num_train_loader 1235num_training_steps epochs * math.ceil(num_train_loader/batch_size) # 总的训练步数# 定义优化器
optimizer AdamW(model.parameters(), lrlearning_rate)# 创建学习率调度器
scheduler get_scheduler(namecosine, # 可以选择 linear, cosine, polynomial, constant, constant_with_warmupoptimizeroptimizer,num_warmup_steps100, # 预热步数num_training_stepsnum_training_steps # 总的训练步数
)# 存储每一步的学习率
learning_rates []# for step in range(num_training_steps):
# optimizer.step()
# scheduler.step()
# learning_rates.append(optimizer.param_groups[0][lr])for epoch in range(epochs):# for batch in train_loader:for step in range(0, num_train_loader, batch_size):optimizer.step()scheduler.step()learning_rates.append(optimizer.param_groups[0][lr])# 绘制学习率曲线
plt.plot(learning_rates)
plt.xlabel(Training Steps)
plt.ylabel(Learning Rate)
plt.title(Learning Rate Schedule)
plt.show()实验结果
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89664.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!