View source on GitHub
|
Optimizer that implements the Adamax algorithm.
Inherits From: Optimizer
tf.keras.optimizers.experimental.Adamax(
learning_rate=0.001,
beta_1=0.9,
beta_2=0.999,
epsilon=1e-07,
weight_decay=None,
clipnorm=None,
clipvalue=None,
global_clipnorm=None,
use_ema=False,
ema_momentum=0.99,
ema_overwrite_frequency=None,
jit_compile=True,
name='Adamax',
**kwargs
)
Adamax, a variant of Adam based on the infinity norm, is a first-order gradient-based optimization method. Due to its capability of adjusting the learning rate based on data characteristics, it is suited to learn time-variant process, e.g., speech data with dynamically changed noise conditions. Default parameters follow those provided in the paper (see references below).
Initialization:
m = 0 # Initialize initial 1st moment vector
u = 0 # Initialize the exponentially weighted infinity norm
t = 0 # Initialize timestep
The update rule for parameter w with gradient g is described at the end
of section 7.1 of the paper (see the referenece section):
t += 1
m = beta1 * m + (1 - beta) * g
u = max(beta2 * u, abs(g))
current_lr = learning_rate / (1 - beta1 ** t)
w = w - current_lr * m / (u + epsilon)
Args |
|---|
learning_rate
tf.Tensor, floating point value, a schedule that is a
tf.keras.optimizers.schedules.LearningRateSchedule, or a callable
that takes no arguments and returns the actual value to use. The
learning rate. Defaults to 0.001.
beta_1
beta_2
epsilon
name
weight_decay
clipnorm
clipvalue
global_clipnorm
use_ema
ema_momentum
use_ema=True.
This is the momentum to use when computing
the EMA of the model's weights:
new_average = ema_momentum * old_average + (1 - ema_momentum) *
current_variable_value.
ema_overwrite_frequency
use_ema=True. Every ema_overwrite_frequency steps of iterations,
we overwrite the model variable by its moving average.
If None, the optimizer
does not overwrite model variables in the middle of training, and you
need to explicitly overwrite the variables at the end of training
by calling optimizer.finalize_variable_values()
(which updates the model
variables in-place). When using the built-in fit() training loop,
this happens automatically after the last epoch,
and you don't need to do anything.
jit_compile
mesh
tf.experimental.dtensor.Mesh instance. When provided,
the optimizer will be run in DTensor mode, e.g. state
tracking variable will be a DVariable, and aggregation/reduction will
happen in the global DTensor context.
**kwargs
Reference | |
|---|---|
Attributes |
|---|
iterations
optimizer has run.By default, iterations would be incremented by one every time
apply_gradients() is called.
learning_rate
variables
Methods
add_variable
add_variable(
shape, dtype=None, initializer='zeros', name=None
)
Create an optimizer variable.
| Args |
|---|
shape
dtype
tf.keras.backend.floatx if unspecified.
initializer
name
| Returns | |
|---|---|
| An optimizer variable, in the format of tf.Variable. |
build
build(
var_list
)
Initialize optimizer variables.
Adamax optimizer has 2 types of variables: momentums (denoted as m), exponentially weighted infinity norm (denoted as u).
| Args |
|---|
var_list
compute_gradients
compute_gradients(
loss, var_list, tape=None
)
Compute gradients of loss on trainable variables.
| Args |
|---|
loss
Tensor or callable. If a callable, loss should take no
arguments and return the value to minimize.
var_list
Variable objects to update to minimize
loss, or a callable returning the list or tuple of Variable
objects. Use callable when the variable list would otherwise be
incomplete before minimize since the variables are created at the
first time loss is called.
tape
tf.GradientTape. If loss is provided as a
Tensor, the tape that computed the loss must be provided.
| Returns | |
|---|---|
A list of (gradient, variable) pairs. Variable is always present, but
gradient can be None.
|
exclude_from_weight_decay
exclude_from_weight_decay(
var_list=None, var_names=None
)
Exclude variables from weight decay.
This method must be called before the optimizer's build method is
called. You can set specific variables to exclude out, or set a list of
strings as the anchor words, if any of which appear in a variable's
name, then the variable is excluded.
| Args |
|---|
var_list
tf.Variables to exclude from weight decay.
var_names
var_names appear
in the model variable's name, then this model variable is
excluded from weight decay. For example, var_names=['bias']
excludes all bias variables from weight decay.
finalize_variable_values
finalize_variable_values(
var_list
)
Set the final value of model's trainable variables.
Sometimes there are some extra steps before ending the variable updates, such as overriding the model variables with its average value.
| Args |
|---|
var_list
from_config
@classmethodfrom_config( config, custom_objects=None )
Creates an optimizer from its config.
This method is the reverse of get_config, capable of instantiating the
same optimizer from the config dictionary.
| Args |
|---|
config
custom_objects
| Returns | |
|---|---|
| An optimizer instance. |
get_config
get_config()
Returns the config of the optimizer.
An optimizer config is a Python dictionary (serializable) containing the configuration of an optimizer. The same optimizer can be reinstantiated later (without any saved state) from this configuration.
Subclass optimizer should override this method to include other hyperparameters.
| Returns | |
|---|---|
| Python dictionary. |
load_own_variables
load_own_variables(
store
)
Set the state of this optimizer object.
minimize
minimize(
loss, var_list, tape=None
)
Minimize loss by updating var_list.
This method simply computes gradient using tf.GradientTape and calls
apply_gradients(). If you want to process the gradient before applying
then call tf.GradientTape and apply_gradients() explicitly instead
of using this function.
| Args |
|---|
loss
Tensor or callable. If a callable, loss should take no
arguments and return the value to minimize.
var_list
Variable objects to update to minimize
loss, or a callable returning the list or tuple of Variable
objects. Use callable when the variable list would otherwise be
incomplete before minimize since the variables are created at the
first time loss is called.
tape
tf.GradientTape.
| Returns | |
|---|---|
| None |
save_own_variables
save_own_variables(
store
)
Get the state of this optimizer object.
set_weights
set_weights(
weights
)
Set the weights of the optimizer.
| Args |
|---|
weights
tf.Variables or numpy arrays, the target values
of optimizer variables. It should have the same order as
self._variables.
update_step
update_step(
gradient, variable
)
Update step given gradient and the associated model variable.
View source on GitHub