|
|
|
@ -16,8 +16,8 @@ import framework
|
|
|
|
|
from . import core
|
|
|
|
|
|
|
|
|
|
__all__ = [
|
|
|
|
|
'append_regularization_ops', 'WeightDecayRegularizer', 'L1Decay', 'L2Decay',
|
|
|
|
|
'L1DecayRegularizer', 'L2DecayRegularizer'
|
|
|
|
|
'append_regularization_ops', 'L1Decay', 'L2Decay', 'L1DecayRegularizer',
|
|
|
|
|
'L2DecayRegularizer'
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -36,7 +36,8 @@ def append_regularization_ops(parameters_and_grads, regularization=None):
|
|
|
|
|
set. It will be applied with regularizer.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
list of (parameters, gradients) pair with the regularized gradient
|
|
|
|
|
list[(Variable, Variable)]: list of (parameters, gradients) \
|
|
|
|
|
pair with the regularized gradient
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
Exception: Unknown regularization type
|
|
|
|
@ -100,6 +101,24 @@ class WeightDecayRegularizer(object):
|
|
|
|
|
|
|
|
|
|
class L2DecayRegularizer(WeightDecayRegularizer):
|
|
|
|
|
"""Implements the L2 Weight Decay Regularization
|
|
|
|
|
|
|
|
|
|
Small values of L2 can help prevent over fitting the training data.
|
|
|
|
|
|
|
|
|
|
.. math::
|
|
|
|
|
|
|
|
|
|
L2WeightDecay = reg\_coeff * parameter
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
regularization_coeff(float): regularization coeff
|
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
optimizer = fluid.optimizer.Adagrad(
|
|
|
|
|
learning_rate=1e-4,
|
|
|
|
|
regularization=fluid.regularizer.L2DecayRegularizer(
|
|
|
|
|
regularization_coeff=0.1))
|
|
|
|
|
optimizer.minimize(avg_cost)
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def __init__(self, regularization_coeff=0.0):
|
|
|
|
@ -154,6 +173,27 @@ class L2DecayRegularizer(WeightDecayRegularizer):
|
|
|
|
|
|
|
|
|
|
class L1DecayRegularizer(WeightDecayRegularizer):
|
|
|
|
|
"""Implements the L1 Weight Decay Regularization
|
|
|
|
|
|
|
|
|
|
L1 regularization encourages sparsity.
|
|
|
|
|
|
|
|
|
|
.. math::
|
|
|
|
|
|
|
|
|
|
L1WeightDecay = reg\_coeff * sign(parameter)
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
regularization_coeff(float): regularization coeff
|
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
program = fluid.framework.Program()
|
|
|
|
|
block = program.global_block()
|
|
|
|
|
mul_x = block.create_parameter(
|
|
|
|
|
dtype="float32",
|
|
|
|
|
shape=[5, 10],
|
|
|
|
|
lod_level=0,
|
|
|
|
|
name="mul.x",
|
|
|
|
|
regularizer=fluid.regularizer.L1DecayRegularizer(0.5))
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def __init__(self, regularization_coeff=0.0):
|
|
|
|
|