Skip to content

_get_lr

get_lr

Get the learning rate of a given model generated by fe.build.

This method can be used with TensorFlow models:

m = fe.build(fe.architecture.tensorflow.LeNet, optimizer_fn="adam")
b = fe.backend.get_lr(model=m)  # 0.001

This method can be used with PyTorch models:

m = fe.build(fe.architecture.pytorch.LeNet, optimizer_fn="adam")
b = fe.backend.get_lr(model=m)  # 0.001

Parameters:

Name Type Description Default
model Union[Model, Module]

A neural network instance to inspect.

required

Returns:

Type Description
float

The learning rate of model.

Raises:

Type Description
ValueError

If model is an unacceptable data type.

Source code in fastestimator/fastestimator/backend/_get_lr.py
def get_lr(model: Union[tf.keras.Model, torch.nn.Module]) -> float:
    """Get the learning rate of a given `model` generated by `fe.build`.

    This method can be used with TensorFlow models:
    ```python
    m = fe.build(fe.architecture.tensorflow.LeNet, optimizer_fn="adam")
    b = fe.backend.get_lr(model=m)  # 0.001
    ```

    This method can be used with PyTorch models:
    ```python
    m = fe.build(fe.architecture.pytorch.LeNet, optimizer_fn="adam")
    b = fe.backend.get_lr(model=m)  # 0.001
    ```

    Args:
        model: A neural network instance to inspect.

    Returns:
        The learning rate of `model`.

    Raises:
        ValueError: If `model` is an unacceptable data type.
    """
    assert hasattr(model, "fe_compiled") and model.fe_compiled, "get_lr only accept models from fe.build"
    if isinstance(model, tf.keras.Model):
        lr = tf.keras.backend.get_value(model.current_optimizer.lr)
    elif isinstance(model, torch.nn.Module):
        lr = model.current_optimizer.param_groups[0]['lr']
    else:
        raise ValueError("Unrecognized model instance {}".format(type(model)))
    return lr