tf.compat.v1.train.polynomial_decay
Stay organized with collections
Save and categorize content based on your preferences.
Applies a polynomial decay to the learning rate.
tf.compat.v1.train.polynomial_decay(
learning_rate, global_step, decay_steps, end_learning_rate=0.0001, power=1.0,
cycle=False, name=None
)
It is commonly observed that a monotonically decreasing learning rate, whose
degree of change is carefully chosen, results in a better performing model.
This function applies a polynomial decay function to a provided initial
learning_rate
to reach an end_learning_rate
in the given decay_steps
.
It requires a global_step
value to compute the decayed learning rate. You
can just pass a TensorFlow variable that you increment at each training step.
The function returns the decayed learning rate. It is computed as:
global_step = min(global_step, decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) *
(1 - global_step / decay_steps) ^ (power) +
end_learning_rate
If cycle
is True then a multiple of decay_steps
is used, the first one
that is bigger than global_steps
.
decay_steps = decay_steps * ceil(global_step / decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) *
(1 - global_step / decay_steps) ^ (power) +
end_learning_rate
Example: decay from 0.1 to 0.01 in 10000 steps using sqrt (i.e. power=0.5):
...
global_step = tf.Variable(0, trainable=False)
starter_learning_rate = 0.1
end_learning_rate = 0.01
decay_steps = 10000
learning_rate = tf.compat.v1.train.polynomial_decay(starter_learning_rate,
global_step,
decay_steps, end_learning_rate,
power=0.5)
# Passing global_step to minimize() will increment it at each step.
learning_step = (
tf.compat.v1.train.GradientDescentOptimizer(learning_rate)
.minimize(...my loss..., global_step=global_step)
)
Args |
learning_rate
|
A scalar float32 or float64 Tensor or a Python number.
The initial learning rate.
|
global_step
|
A scalar int32 or int64 Tensor or a Python number. Global
step to use for the decay computation. Must not be negative.
|
decay_steps
|
A scalar int32 or int64 Tensor or a Python number. Must
be positive. See the decay computation above.
|
end_learning_rate
|
A scalar float32 or float64 Tensor or a Python
number. The minimal end learning rate.
|
power
|
A scalar float32 or float64 Tensor or a Python number. The
power of the polynomial. Defaults to linear, 1.0.
|
cycle
|
A boolean, whether or not it should cycle beyond decay_steps.
|
name
|
String. Optional name of the operation. Defaults to
'PolynomialDecay'.
|
Returns |
A scalar Tensor of the same type as learning_rate . The decayed
learning rate.
|
Raises |
ValueError
|
if global_step is not supplied.
|
Eager Compatibility
When eager execution is enabled, this function returns a function which in
turn returns the decayed learning rate Tensor. This can be useful for changing
the learning rate value across different invocations of optimizer functions.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-10-01 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2020-10-01 UTC."],[],[],null,["# tf.compat.v1.train.polynomial_decay\n\n\u003cbr /\u003e\n\n|-------------------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.0.0/tensorflow/python/training/learning_rate_decay.py#L182-L280) |\n\nApplies a polynomial decay to the learning rate. \n\n tf.compat.v1.train.polynomial_decay(\n learning_rate, global_step, decay_steps, end_learning_rate=0.0001, power=1.0,\n cycle=False, name=None\n )\n\nIt is commonly observed that a monotonically decreasing learning rate, whose\ndegree of change is carefully chosen, results in a better performing model.\nThis function applies a polynomial decay function to a provided initial\n`learning_rate` to reach an `end_learning_rate` in the given `decay_steps`.\n\nIt requires a `global_step` value to compute the decayed learning rate. You\ncan just pass a TensorFlow variable that you increment at each training step.\n\nThe function returns the decayed learning rate. It is computed as: \n\n global_step = min(global_step, decay_steps)\n decayed_learning_rate = (learning_rate - end_learning_rate) *\n (1 - global_step / decay_steps) ^ (power) +\n end_learning_rate\n\nIf `cycle` is True then a multiple of `decay_steps` is used, the first one\nthat is bigger than `global_steps`. \n\n decay_steps = decay_steps * ceil(global_step / decay_steps)\n decayed_learning_rate = (learning_rate - end_learning_rate) *\n (1 - global_step / decay_steps) ^ (power) +\n end_learning_rate\n\nExample: decay from 0.1 to 0.01 in 10000 steps using sqrt (i.e. power=0.5): \n\n ...\n global_step = tf.Variable(0, trainable=False)\n starter_learning_rate = 0.1\n end_learning_rate = 0.01\n decay_steps = 10000\n learning_rate = tf.compat.v1.train.polynomial_decay(starter_learning_rate,\n global_step,\n decay_steps, end_learning_rate,\n power=0.5)\n # Passing global_step to minimize() will increment it at each step.\n learning_step = (\n tf.compat.v1.train.GradientDescentOptimizer(learning_rate)\n .minimize(...my loss..., global_step=global_step)\n )\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------------------|------------------------------------------------------------------------------------------------------------------------------|\n| `learning_rate` | A scalar `float32` or `float64` `Tensor` or a Python number. The initial learning rate. |\n| `global_step` | A scalar `int32` or `int64` `Tensor` or a Python number. Global step to use for the decay computation. Must not be negative. |\n| `decay_steps` | A scalar `int32` or `int64` `Tensor` or a Python number. Must be positive. See the decay computation above. |\n| `end_learning_rate` | A scalar `float32` or `float64` `Tensor` or a Python number. The minimal end learning rate. |\n| `power` | A scalar `float32` or `float64` `Tensor` or a Python number. The power of the polynomial. Defaults to linear, 1.0. |\n| `cycle` | A boolean, whether or not it should cycle beyond decay_steps. |\n| `name` | String. Optional name of the operation. Defaults to 'PolynomialDecay'. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ------- ||\n|---|---|\n| A scalar `Tensor` of the same type as `learning_rate`. The decayed learning rate. ||\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|--------------|-----------------------------------|\n| `ValueError` | if `global_step` is not supplied. |\n\n\u003cbr /\u003e\n\n#### Eager Compatibility\n\nWhen eager execution is enabled, this function returns a function which in\nturn returns the decayed learning rate Tensor. This can be useful for changing\nthe learning rate value across different invocations of optimizer functions."]]