<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/keras-team/keras/tree/v3.15.1/keras/src/optimizers/schedules/learning_rate_schedule.py#L460-L569) |

A `LearningRateSchedule` that uses an inverse time decay schedule.

Inherits From: [`LearningRateSchedule`](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/schedules/LearningRateSchedule)

    tf.keras.optimizers.schedules.InverseTimeDecay(
        initial_learning_rate,
        decay_steps,
        decay_rate,
        staircase=False,
        name='InverseTimeDecay'
    )

### Used in the notebooks

| Used in the tutorials |
|---|
| - [Overfit and underfit](https://www.tensorflow.org/tutorials/keras/overfit_and_underfit) |

When training a model, it is often useful to lower the learning rate as
the training progresses. This schedule applies the inverse decay function
to an optimizer step, given a provided initial learning rate.
It requires a `step` value to compute the decayed learning rate. You can
just pass a backend variable that you increment at each training step.

The schedule is a 1-arg callable that produces a decayed learning
rate when passed the current optimizer step. This can be useful for changing
the learning rate value across different invocations of optimizer functions.
It is computed as:

    def decayed_learning_rate(step):
        return initial_learning_rate / (1 + decay_rate * step / decay_step)

or, if `staircase` is `True`, as:

    def decayed_learning_rate(step):
        return initial_learning_rate /
               (1 + decay_rate * floor(step / decay_step))

You can pass this schedule directly into a [`keras.optimizers.Optimizer`](https://www.tensorflow.org/api_docs/python/tf/keras/Optimizer)
as the learning rate.
Example: Fit a Keras model when decaying 1/t with a rate of 0.5:

    ...
    initial_learning_rate = 0.1
    decay_steps = 1.0
    decay_rate = 0.5
    learning_rate_fn = keras.optimizers.schedules.InverseTimeDecay(
        initial_learning_rate, decay_steps, decay_rate)

    model.compile(optimizer=keras.optimizers.SGD(
                      learning_rate=learning_rate_fn),
                  loss='sparse_categorical_crossentropy',
                  metrics=['accuracy'])

    model.fit(data, labels, epochs=5)

<br />

<br />

<br />

| ## Args ||
|---|---|
| `initial_learning_rate` | A Python float. The initial learning rate. |
| `decay_steps` | How often to apply decay. |
| `decay_rate` | A Python number. The decay rate. |
| `staircase` | Whether to apply decay in a discrete staircase, as o pposed to continuous, fashion. |
| `name` | String. Optional name of the operation. Defaults to `"InverseTimeDecay"`. |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A 1-arg callable learning rate schedule that takes the current optimizer step and outputs the decayed learning rate, a scalar tensor of the same type as `initial_learning_rate`. ||

<br />

## Methods

### `from_config`

[View source](https://github.com/keras-team/keras/tree/v3.15.1/keras/src/optimizers/schedules/learning_rate_schedule.py#L66-L76)

    @classmethod
    from_config(
        config
    )

Instantiates a `LearningRateSchedule` from its config.

<br />

<br />

<br />

| Args ||
|---|---|
| `config` | Output of `get_config()`. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| A `LearningRateSchedule` instance. ||

<br />

### `get_config`

[View source](https://github.com/keras-team/keras/tree/v3.15.1/keras/src/optimizers/schedules/learning_rate_schedule.py#L562-L569)

    get_config()

### `__call__`

[View source](https://github.com/keras-team/keras/tree/v3.15.1/keras/src/optimizers/schedules/learning_rate_schedule.py#L545-L560)

    __call__(
        step
    )

Call self as a function.