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/

相关推荐
抠头专注python环境配置10 分钟前
Anaconda创建环境报错:CondaHTTPEFTOT: HTTP 403 FORBIDDEN for url
python·conda
云道轩16 分钟前
使用Docker在Rocky Linux 9.5上在线部署LangFlow
linux·人工智能·docker·容器·langflow
POLOAPI34 分钟前
从模型到生产:AI 大模型落地工程与效率优化实践
人工智能·gpt·gemini
谷歌上搜百度38 分钟前
LLM并非“万能钥匙”——深度解析大语言模型的本质与边界
人工智能·llm
王者鳜錸1 小时前
PYTHON从入门到实践-15数据可视化
开发语言·python·信息可视化
杨航 AI1 小时前
ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)
开发语言·python·adb
Wendy14411 小时前
【图像掩膜】——图像预处理(OpenCV)
人工智能·opencv·计算机视觉
机器之心1 小时前
开启RL Scaling新纪元,siiRL开源:完全分布式强化学习框架,支持超千卡规模高效训练
人工智能
GISer_Jing1 小时前
Coze:字节跳动AI开发平台功能和架构解析
javascript·人工智能·架构·开源
郝学胜-神的一滴1 小时前
Python defaultdict 的强大之处:告别繁琐的字典键检查: Effective Python 第17条
开发语言·python·程序人生