当前位置: 首页 > news >正文

pytorch常用函数

目录

调整学习率的方法

state_dict

@函数修饰符

argparse

cvkit


调整学习率的方法

在模型训练的优化部分,调整最多的一个参数就是学习率,合理的学习率可以使优化器快速收敛。
一般在训练初期给予较大的学习率,随着训练的进行,学习率逐渐减小。
等间隔调整学习率
#step_size epoch间隔大小,比如10 10 20 ..会调整学习率,调整率是gamma
#last_epoch是指上一个epoch
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1,
last_epoch=-1)
按设定的间隔调整学习率
#milestones(list)-一个list,每一个元素代表何时调整学习率,list元素必须是递增的,
#调整率是gamma
#last_epoch是指上一个epoch
class torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones, gamma=0.1,
last_epoch=-1)
按指数衰减调整学习率,调整公式: lr = lr * gamma**epoch
以余弦函数为周期,并在每个周期最大值时重新设置学习率
当某指标不再变化(下降或升高),调整学习率
#step_size epoch间隔大小,比如10 10 20 ..会调整学习率,调整率是gamma
#last_epoch是指上一个epoch
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1,
last_epoch=-1)
以余弦函数为周期,并在每个周期最大值时重新设置学习率
#last_epoch是指上一个epoch
#T_max(int)- 一次学习率周期的迭代次数,即T_maxepoch之后重新设置学习率。
#eta_min(float)- 最小学习率,即在一个周期中,学习率最小会下降到eta_min,默认值为0
torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0,
last_epoch=-1)
当某指标不再变化(下降或升高),调整学习率
torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min',
factor=0.1, patience=10, verbose=False, threshold=0.0001,
threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08)
#参数
mode(str)- 模式选择,有 minmax两种模式,min表示当指标不再降低(如监测loss)max表示当
指标不再升高(如监测accuracy)
factor(float)- 学习率调整倍数(等同于其它方法的gamma),即学习率更新为 lr = lr *
factor patience(int)- 直译——"耐心",即忍受该指标多少个step不变化,当忍无可忍时,调整学
习率。注,可以不是连续5次。
verbose(bool)- 是否打印学习率信息, print('Epoch {:5d}: reducing learning rate'
' of group {} to {:.4e}.'.format(epoch, i, new_lr))
threshold(float)- Threshold for measuring the new optimum,配合threshold_mode
使用,默认值1e-4。作用是用来控制当前指标与best指标的差异。
cooldown(int)- 冷却时间,当调整学习率之后,让学习率调整策略冷静一下,让模型再训练一段
时间,再重启监测模式。
min_lr(float or list)- 学习率下限,可为float,或者list,当有多个参数组时,可用list
行设置。
eps(float)- 学习率衰减的最小值,当学习率变化小于eps时,则不调整学习率
为不同参数组设定不同学习率调整策略。调整规则为,lr = base_lr * lmbda(self.last_epoch)
#last_epoch是指上一个epoch
#lr_lambda(function or list)-一个计算学习率调整倍数的函数,输入通常为step,当有多个参
数组时,设为list
torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)

state_dict

python的字典对象
将每一层与它的对应参数建立映射关系.(model的每一层的weights及偏置等等)
只有那些参数可以训练的layer才会被保存到模型的state_dict,如卷积层,线性层等等)
优化器对象Optimizer也有一个state_dict,它包含了优化器的状态以及被使用的超参数(lr,
momentum,weight_decay
state_dict是在定义了modeloptimizer之后pytorch自动生成的,可以直接调用.常用的保存
state_dict的格式是 .pt
查看方式:
print("Model's state_dict:")
for param_tensor in model.state_dict():
print(param_tensor, "\t", model.state_dict()[param_tensor].size())
# Print optimizer's state_dict
print("Optimizer's state_dict:")
for var_name in optimizer.state_dict():
print(var_name, "\t", optimizer.state_dict()[var_name])

@函数修饰符

作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
创建函数修饰符的规则:
修饰符是一个函数
修饰符取被修饰函数为参数
修饰符返回一个新函数
修饰符维护被维护函数的签名
示例
#https://www.cnblogs.com/gdjlc/p/11182441.html
def log(func):
def wrapper():
print('log开始 ...')
func()
print('log结束 ...')
return wrapper
@log
def test():
print('test ..')
test()
#out
log开始 ...
test ..
log结束 ...

argparse

一个Python模块:命令行选项、参数和子命令解析器。
示例:
#创建解析器
parser = argparse.ArgumentParser(description='Net train')
#添加参数
parser.add_argument('--imw', default=256, type=int)
parser.add_argument('-a',--accelerated', action="store_true", default=False)
#参数解析
args = parser.parse_args()
#参数使用
print(args.imw)

cvkit

pfm格式文件查看工具
cvkithttps://vision.middlebury.edu/stereo/code/
http://www.dtcms.com/a/296477.html

相关文章:

  • 【MySQL数据库备份与恢复1】二进制日志,mysqlbinlog
  • Linux Wlan 无线网络驱动开发-scan协议全流程详解
  • 企业安全基石:解锁等保测评的战略价值
  • 循环神经网络--LSTM模型
  • 15.2 DeepSpeed显存优化实战:7B大模型训练资源从84GB压缩到10GB!
  • 11-day08文本匹配
  • Cisco 主模式配置
  • 综合实验(4)
  • 光猫配置DMZ到路由器
  • OSPF多区域介绍
  • 使用 Elastic Observability 监控 Proxmox VE 部署
  • Linux命令基础完结篇
  • 【实时Linux实战系列】基于实时Linux的机器学习应用开发
  • 大模型微调学习笔记(基于讯飞星辰MaaS速学版)
  • Java 中 Future 与 Callable 的使用详解
  • pycharm在virtual环境下安装依赖失败的解决方案
  • 面试150 搜索二维矩阵
  • Mirauge3D 赋能:全自动建模,让城市规划与建筑设计拥有高分辨率实景三维模型
  • OpenHands:Manus 最强开源平替——本地部署与实战指南
  • KTH5791——3D 霍尔位置传感器--鼠标滚轮专用芯片
  • 【Ollama】open-webui部署模型
  • 高通平台基线升级时,从Android 13升级到Android 15遇到的selinux权限不生效问题分析
  • 【矩阵专题】Leetcode54.螺旋矩阵
  • Linux基础服务(NTP/Chrony)
  • 红队视角:实战渗透测试中漏洞利用的进阶技巧与防御
  • Python Playwright库详解:从入门到实战
  • 虚拟电厂——解读69页 2024虚拟电厂售电业务及共享储能等新型业态趋势【附全文阅读】
  • C 语言核心知识点详解:函数调用、数组传参与变量特性
  • 力扣20:有效的括号
  • 秋叶sd-webui频繁出现生成后无反应的问题