paddlepaddle优化函数
概述
神经网络的训练就是调整权重(参数)使得损失函数值尽可能得小,在训练过程中,将损失函数值逐渐收敛,得到一组使得神经网络拟合真实模型的权重(参数)。所以,优化算法的最终目标是找到损失函数的最小值。而这个寻找过程就是不断地微调变量w和b的值,一步一步地试出这个最小值。 常见的优化算法有随机梯度下降法(SGD)、Adam算法等等
随机梯度下降法
optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.001)
opts = optimizer.minimize(avg_cost)
SGDOptimizer
class paddle.fluid.optimizer.SGDOptimizer(learning_rate, regularization=None, name=None)
learning_rate (float|Variable) - 用于更新参数的学习率。可以是浮点值,也可以是具有一个浮点值作为数据元素的变量。
regularization - 一个正则化器,例如 fluid.regularizer.L2DecayRegularizer
name - 可选的名称前缀。
Adam算法
AdamOptimizer
class paddle.fluid.optimizer.AdamOptimizer(
learning_rate=0.001,
beta1=0.9,
beta2=0.999,
epsilon=1e-08,
regularization=None,
name=None,
lazy_mode=False)
learning_rate (float|Variable)-学习率,用于更新参数。作为数据参数,可以是一个浮点类型值或有一个浮点类型值的变量
beta1 (float)-一阶矩估计的指数衰减率
beta2 (float)-二阶矩估计的指数衰减率
epsilon (float)-保持数值稳定性的短浮点类型值
regularization - 规则化函数,例如''fluid.regularizer.L2DecayRegularizer
name - 可选名称前缀
lazy_mode (bool: false) - 官方Adam算法有两个移动平均累加器(moving-average accumulators)。累加器在每一步都会更新。在密集模式和稀疏模式下,两条移动平均线的每个元素都会更新。如果参数非常大,那么更新可能很慢。 lazy mode仅更新当前具有梯度的元素,所以它会更快。但是这种模式与原始的算法有不同的描述,可能会导致不同的结果。
to be contined
刚开始学习,还没学太多,之后用到再补充