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[tf.keras.Model, torch.nn.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
|