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_max 个 epoch 之后重新设置学习率。
#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 ) - 模式选择,有 min 和 max 两种模式, 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 是在定义了 model 或 optimizer 之后 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 格式文件查看工具
cvkit : https://vision.middlebury.edu/stereo/code/

相关推荐
南鲸吖2 分钟前
04 深入理解大语言模型
人工智能
λqaq72 分钟前
MySQL 数据库基础(2)约束、用户权限、远程连接、外键与 TCP/UDP 理解
linux·数据库·python·tcp/ip·mysql
小小帅呀4 分钟前
学习VLA第3天:训练一个最简单的神经网络
人工智能·神经网络·学习
人工干智能5 分钟前
科普:pandas 时间偏移别名:ts.resample(“5Min“).sum()
python·pandas
数字护盾(和中)11 分钟前
和中科技剖析 EDR 绕过全链路,AMSI、ETW 规避技术与防御对策
运维·网络·人工智能·科技·安全·web安全
土星云SaturnCloud13 分钟前
高速服务区AI视觉全场景方案:安全管控+运营提效+服务升级,土星云边缘算力赋能智慧交通
服务器·人工智能·ai·边缘计算
开源量化GO15 分钟前
最新AI辅助量化表达:先理清规则,再按需求选工具
人工智能·python
天天代码码天天20 分钟前
不用 ONNX Runtime,也不用 OpenCV:我用纯 C 做了一个 PP-OCR 专用推理 Runtime
人工智能
Zane199422 分钟前
为什么 del 一个对象有时立刻消失,有时却纹丝不动?一文讲透引用计数与垃圾回收
后端·python
u13013024 分钟前
AI 日报(2026年08月25日)
人工智能