|  View source on GitHub | 
Represents an optimizer for use in TensorFlow Federated.
Its pair of initialize and next methods define the optimization
algorithm, with next corresponding to a step of the optimizer.
This class captures iterative optimization algorithms where the same operation
is applied in every optimization step. The next method should be a
computation that can be implemented as a tf.function. Each method will
generally only be traced once to create the corresponding TensorFlow graph
functions. Thus, the methods should not create or use tf.Variable objects.
Instead, any dependency between steps of the algorithm should be included
as tensors in a state. For instance, a momentum term for momentum SGD is
created in the initialize method as all-zeros tensor, which is then both
an input and an output of the next method. These aspects should be accessed
and changed via get_hparams and set_hparams, respectively.
As a best practice, any implementation using learning rate, should store it in
its state under the key tff.learning.optimizers.LEARNING_RATE_KEY.
Methods
get_hparams
get_hparams(
    state: State
) -> Hparams
Returns a dictionary containing the optimizer state hyperparameters.
| Args | |
|---|---|
| state | The state of the optimizer. Must match the structure returned by
the initializemethod. | 
| Returns | |
|---|---|
| An ordered dictionary representing the hyperparameters in the given state. | 
initialize
@abc.abstractmethodinitialize( specs: Any ) -> State
Returns the initial state of the optimizer.
| Args | |
|---|---|
| specs | A (possibly nested) structure of tf.TensorSpecs describing the
weights to be optimized. Theweightsandgradsargument ofnextmust match the structure and (shape, dtype) ofspecs. | 
| Returns | |
|---|---|
| Initial state of the optimizer. A (possibly nested) structure of tensors. | 
next
@abc.abstractmethodnext( state: State, weights: Weights, gradients: Any ) -> tuple[State, Weights]
Takes a step of the optimizer.
| Args | |
|---|---|
| state | State of the optimizer. A structure of tensors matching the
structure returned by initializemethod. | 
| weights | The weights to be updated by the optimizer. A collection of
tensors matching the structure of specsprovided in theinitializemethod. | 
| gradients | The gradients to use for the update by the optimizer. A
collection of tensors matching the structure of specsprovided in theinitializemethod. | 
| Returns | |
|---|---|
| A (state, weights) tuple representing the updated stateandweights. | 
set_hparams
set_hparams(
    state: State, hparams: Hparams
) -> State
Returns an optimizer state with updated hyperparameters.
| Args | |
|---|---|
| state | The state of the optimizer. Must match the structure returned by
the initializemethod. | 
| hparams | A dictionary matching the output of get_hparamscontaining the
updated hyperparameters to use. | 
| Returns | |
|---|---|
| An ordered dictionary representing the hyperparameters in the given state. |