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

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

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

torch.optim - PyTorch中文文档

Adam:

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

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.

SGD:

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

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

Adagrad:

可自适应调整学习率.

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:权重衰减系数.

RMSprop:

解决了上面那个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中实例化优化器多了第一个参数为网络模型的参数.并且在训练中需要手动清空优化器梯度.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值