400-123-4567
联系我们
电话:400-123-4567
传真:+86-123-4567
邮箱:admin@youweb.com
手机:13800000000
地址:广东省广州市天河区88号
天火资讯您当前的位置: 首页 > 天火资讯

【TensorFlow&PyTorch】常用优化器学习笔记

更新时间:2024-06-04 16:24:39

以下选取部分本人认为的常用的优化器以及参数(即不全),想看详情的可去文档查看.

Module: tf.keras.optimizers ?|? TensorFlow Core v2.9.1

torch.optim - PyTorch中文文档

最常用的优化器之一,不懂用什么优化器的时候选它就对了。

TensorFlow:

optimizer=tensorflow.keras.optimizers.Adam( lr , beta_1= ,beta_2= ,epsilon= )

lr : 学习率,默认为0.001.

beta_1:一阶矩估计的指数衰减率.默认为 0.9.

beta_2:二阶矩估计的指数衰减率.默认为 0.999.

epsilon:用于数值稳定性的小常数(模糊因子?),默认值为0.0000001(以上这仨参数尽量不动,就按默认值)

PyTorch:?

optimizers=torch.optim.Adam( params , lr= ,betas= ,eps= )

params:待优化参数,加入(model.parameters( ))即可,其中model为自行定义的网络结构.

lr:学习率,默认值为0.001.

betas:质数衰减率,其中需包括一阶和二阶,即填入包含两参数的列表或元组.

eps:同上的epsilon.

随机梯度下降,可在训练时下调学习率.

TensorFlow:

optimizer=tensorflow.keras.optimizers.SGD( lr , momentum= ,decay= )

lr:学习率.

momentum:动量参数,默认值为0.0

decay: 学习率衰减值,默认值为0.0

PyTorch:

optimizer=torch.optim.SGD(params , lr= , momentum= , weight_decay= )

lr:学习率.

momentum:动量参数,默认值为0.0.

weight_decay:权重衰减系数,默认为0.0

可自适应调整学习率.

TensorFlow:

optimizer=tensorflow.keras.optimizers.Adagrad( lr , epsilon= , decay=)

lr:学习率.

epsilon:模糊因子.

decay:学习率衰减值.

PyTorch:

optimizer=torch.optim.Adagrad( params , lr= , lr_decay= , weight_decay= )

lr_decay:学习率衰减系数.

weight_decay:权重衰减系数.

解决了上面那个Adagrad学习率急速下降的问题,可以看做优化版.

TensorFlow:

optimizer=tensorflow.keras.optimizers.RMSprop( lr= , rho= , epsilon= , decay= )

rho:梯度的折扣因子.默认值为 0.9.

epsilon:模糊因子,默认值为0.0000001.

decay:学习率衰减值.

PyTorch:

optimizer=torch.optim.RMSprop(params, lr= , alpha= , eps= , weight_decay , momentum=)

alpha:平滑常数,默认值为0.99

eps:为了增加数值计算的稳定性而加到分母里的项.默认值为0.00000001

momentum:动量因子,默认值为0.0

tensorflow:

训练后更新参数:optimizer.apply_gradients(zip(计算好的梯度,网络模型的参数))

网络模型的参数可用:model.trainable_variables()

其中optimizer和model都需要自行定义,实例化.

PyTorch:

在loss值前向传播之前需要清空优化器中的梯度信息,因为会堆积:optimizer.zero_grad( )

在loss值前向传播之后再更新参数:optimizer.step( )

在PyTorch中可强制衰减学习率:

scheduler=StepLR(optimizer,step_size= , gamma= )

意思是optimizer每更新参数step_size次后,学习率*=gamma.

此后更新参数用:scheduler.step( )

以上标蓝的,名字可自行定义,并无强制要求.

TensorFlow和PyTorch中的优化器都差不多,但PyTorch中实例化优化器多了第一个参数为网络模型的参数.并且在训练中需要手动清空优化器梯度.

【返回列表】
网站首页 关于天火娱乐 天火注册 天火资讯 天火登录 天火平台 天火代理APP 天火开户 联系我们
地址:广东省广州市天河区88号    电话:400-123-4567    传真:+86-123-4567
Copyright © 2012-2018 首页-天火娱乐-注册登录站   ICP备案编号:琼ICP备xxxxxxxx号

平台注册入口