beat365官网下载苹果手机-365bet备用服务器-bt365投注

记录时光的故事

Tensorflow中的优化器

分类: 365bet备用服务器 时间: 2025-09-03 11:25:10 作者: admin 阅读: 9639
Tensorflow中的优化器

Tensorflow中的优化器

优化器是用于通过调整各种参数和权重来减少损失(错误)的技术或算法,从而使损失函数最小化,更快地提供更好的模型精度。

Tensorflow中的优化器

优化器是Tensorflow的一个扩展类,它被初始化为模型的参数,但没有给它提供张量。Tensorflow提供的基本优化器是。

tf.train.Optimizer - Tensorflow version 1.x

tf.compat.v1.train.Optimizer - Tensorflow version 2.x

该类从未被直接使用,但其子类被实例化。

梯度下降算法

在解释之前,让我们先了解一下其他算法的基础,即梯度下降算法。梯度下降将权重和损失函数联系起来,因为梯度意味着变化的度量,梯度下降算法确定应该做什么来使用部分导数最小化损失函数–比如增加0.7,减少0.27等等。但是,在大型多维数据集的情况下,当它卡在局部最小值而不是全局最小值时就会出现障碍。

语法:

tf.compat.v1.train.GradientDescentOptimizer(learning_rate,

use_locking,

name = 'GradientDescent)

参数:

learning_rate:算法更新参数的速率。张量或浮点数类型的值。

use_locking:在更新操作中使用锁,如果是真的。

name:操作的可选名称。

Tensorflow Keras优化器类

Tensorflow主要支持9个优化器类,包括其基类(Optimizer)。

Gradient Descent

SGD

AdaGrad

RMSprop

Adadelta

Adam

AdaMax

NAdam

FTRL

SGD 优化器(Stochastic Gradient Descent)

随机梯度下降(SGD)优化方法为每个训练实例执行参数更新。在巨大的数据集的情况下,SGD执行多余的计算,导致频繁的更新,具有较高的差异性,导致目标函数变化很大。

语法:

tf.kears.optimizers.SGD(learning_rate = 0.01,

momentum=0.0,

nesterov=False,

name='SGD',

**kwargs)

参数:

learning_rate:算法更新参数的速率。张量或浮点类型的值。默认值是0.01。

momentum:在适当的方向上加速梯度下降。Float类型的值。默认值为0.0

nesterov:是否应用Nesterov Momentum。布尔类型的值。默认值为False。

name:操作的可选名称

**kwargs:关键字的可变长度参数长度。

优势:

1.需要更少的内存。

2.频繁地改变模型参数。

3.如果使用Momentum,那么有助于减少噪音。

劣势:

1.高差异性

2.计算上很昂贵

AdaGrad 优化器

AdaGrad是指自适应梯度算法。AdaGrad优化器对学习率进行修改,特别是针对个别特征,即数据集中的某些权重可能比其他权重有不同的学习率。

语法:

tf.keras.optimizers.Adagrad(learning_rate=0.001,

initial_accumulator_value=0.1,

epsilon=1e-07,

name="Adagrad",

**kwargs)

参数:

learning_rate:算法更新参数的速率。 张量或浮点类型的值。默认值是0.001

initial_accumulator_value:每个参数动量的起始值。浮点类型的值。必须为非负值。默认值为0.1。

epsilon:用于维持数值稳定性的小值。 浮点类型的值。默认值为1e-07。

name:操作的可选名称。

**kwargs:关键字的可变长度参数长度

优势:

1.最适用于稀疏数据集

2.学习率随迭代而更新

劣势:

1.随着神经网络深度的增加,学习率变得很小

2.可能导致死神经元问题

RMSprop 优化器

RMSprop是均方根传播的意思。RMSprop优化器不允许梯度累积为动力,而只累积特定固定窗口的梯度。它可以被认为是AdaGrad的更新版本,并有一些改进。RMSprop使用简单动量而不是Nesterov动量。

语法:

tf.keras.optimizers.RMSprop(learning_rate=0.001,

rho=0.9,

momentum=0.0,

epsilon=1e-07,

centered=False,

name='RMSprop',

**kwargs)

参数:

learning_rate:算法更新参数的速度。张量或浮点类型的值。默认值是0.001

rho:梯度的折扣系数。默认值为0.9

momentum:在适当的方向上加速rmsprop。浮动类型的值。默认值为0.0

epsilon:用于维持数值稳定性的小值。浮点类型的值。默认值为1e-07

centered:通过这个梯度被梯度的方差规范化。布尔类型的值。设置为 “真 “可能有助于训练模型,但是它的计算成本更高。默认值为False。

name:操作的可选名称

**kwargs:关键字的可变长度参数长度。

优势:

1.学习率会自动调整。

2.每个参数的离散学习率

劣势:学习缓慢

Adadelta 优化器

自适应三角洲(Adadelta)优化器是AdaGrad的一个扩展(类似于RMSprop优化器),然而,Adadelta摒弃了学习率的使用,取而代之的是三角洲平方的指数移动平均值(当前权重与更新权重之差)。它还试图消除学习率衰减的问题。

语法:

tf.keras.optimizers.Adadelta(learning_rate=0.001,

rho=0.95,

epsilon=1e-07,

name='Adadelta',

**kwargs)

参数:

learning_rate:算法更新参数的速度。 张量或浮点类型的值。默认值是0.001

rho:衰减率。张量或浮点类型的值。默认值为0.95

epsilon:用于维持数值稳定性的小数值。 浮点类型的值。默认值为1e-07

name: 操作的可选名称

**kwargs:关键字的变长参数长度

优点:不需要设置默认学习率。

劣势:计算成本高

Adam 优化器

自适应时刻估计法(Adam)是目前使用的最顶级的优化技术之一。在这种方法中,每个参数的自适应学习率被计算出来。这种方法结合了RMSprop和动量的优点,即储存以前梯度的衰减平均值和以前的平方梯度。

语法:

tf.keras.optimizers.Adam(leaarning_rate=0.001,

beta_1=0.9,

beta_2=0.999,

epsilon=1e-07,

amsgrad=False,

name='Adam',

**kwargs)

参数:

learning_rate:算法更新参数的速度。 张量或浮点类型的值。默认值是0.001

beta_1:第一时刻的指数衰减率。常数 浮动张量或浮动类型的值。默认值为0.9。

beta_2:第二时刻的指数衰减率。恒定的浮动张量或浮动类型的值。默认值为0.999

epsilon:用于维持数值稳定性的小数值。浮点类型的值。默认值为1e-07

amsgrad: 是否使用AMSGrad变量。默认值为False。

name: 操作的可选名称

**kwargs:关键字的变长参数长度

优势:

1.易于实施

2.需要更少的内存

3.计算效率高

劣势:

1.可能有体重下降的问题

2.有时可能无法收敛到最优解

AdaMax 优化器

AdaMax是Adam优化器的一个改进。它建立在对低阶矩的自适应近似上(基于无穷大规范)。有时在嵌入的情况下,AdaMax被认为比Adam更好。

语法:

tf.keras.optimizers.Adamax(learning_rate=0.001,

beta_1=0.9,

beta_2=0.999,

epsilon=1e-07,

name='Adamax',

**kwargs)

参数:

learning_rate:算法更新参数的速度。 张量或浮点类型的值。默认值是0.001

beta_1:第一时刻的指数衰减率。常数 浮动张量或浮动类型的值。默认值为0.9。

beta_2:加权无穷大准则的指数衰减率。恒定的浮动张量或浮动类型的值。默认值为0.999

epsilon:用于维持数值稳定性的小数值。浮点类型的值。默认值为1e-07

name: 操作的可选名称

**kwargs:关键字的变长参数长度

优势:

1.无限的秩序使算法稳定。

2.需要对超参数进行较少的调整

劣势:泛化问题

NAdam 优化器

NAdam是Nesterov和Adam优化器的简称。NAdam使用Nesterov动量来更新梯度,而不是Adam使用的vanilla动量。

语法:

tf.keras.optimizers.Nadam(learning_rate=0.001,

beta_1=0.9,

beta_2=0.999,

epsilon=1e-07,

name='Nadam',

**kwargs)

参数:

learning_rate:算法更新参数的速度。张量或浮点类型的值。默认值是0.001

beta_1:第一时刻的指数衰减率。常数 浮动张量或浮动类型的值。默认值为0.9。

beta_2:加权无穷大准则的指数衰减率。恒定的浮动张量或浮动类型的值。默认值为0.999

epsilon:用于维持数值稳定性的小数值。浮点类型的值。默认值为1e-07

name: 操作的可选名称

**kwargs:关键字的变长参数长度

优势:

1.对高曲率的梯度或噪声梯度有更好的结果。

2.学得更快

缺点:有时可能无法收敛到最优解

FTRL 优化器

Follow The Regularized Leader(FTRL)是一种最适合于具有稀疏和大特征空间的浅层模型的优化算法。该版本同时支持收缩型L2正则化(L2惩罚和损失函数之和)和在线L2正则化。

语法:

tf.keras.optimizers.Ftrl(learning_rate=0.001,

learning_rate_power=-0.5,

initial_accumulator_value=0.1,

l1_regularization_strength=0.0,

l2_regularization_strength=0.0,

name='Ftrl',

l2_shrinkage_regularization_strength=0.0,

beta=0.0,

**kwargs)

参数:

learning_rate:算法更新参数的速度。张量或浮点类型的值。默认值是0.001

learning_rate_power:控制训练期间学习率的下降。浮点数类型的值。应小于或等于0。默认值为-0.5。

initial_accumulator_value:累积器的初始值。该值应大于或等于0。默认值为0.1。

l1_regularization_strength:稳定化惩罚。只允许正值或0。浮动类型的值。默认值是0.0。

l2_regularization_strength:稳定化惩罚。只允许正值或0。浮动类型的值.默认值是0.0

name:操作的可选名称

l2_shrinkage_regularization_strength:幅度罚金。只允许正值或0。浮动类型的值。默认值为0.0。

beta:默认的浮点数为0.0

**kwargs:关键字的变长参数长度

优点:能更好地减少损失函数。

劣势:

1.如果正则器的范围不够,就不能达到足够的稳定性。

2.如果正则器的范围很大,那么它离最优决策就很远了。

相关文章

扁鹊正加盟
2016款思域怎样?有什么缺点?
魅族手机为什么会被锁
教你体面和公司说再见——离职的流程和注意事项
39岁前西班牙国脚内格雷多退役,曾效力曼城、塞维、瓦伦等队
怎么让软件无法卸载(软件如何达到无法卸载的状态)