31 def map_optimizer_to_enum(optimizer_instance: Optimizer) -> optimizer_type:
32 """
33 Maps an optimizer instance to the appropriate enum value.
34
35 Args:
36 optimizer_instance (Optimizer): An instance of an optimizer.
37
38 Returns:
39 optimizer_type: Corresponding enum value for the optimizer.
40
41 Raises:
42 TypeError: If the optimizer_instance is not a recognized optimizer type.
43 """
44 optimizer_to_enum: Dict[Type[Optimizer], optimizer_type] = {
45 SGD: optimizer_type.SGD,
46 Adam: optimizer_type.ADAM
47 }
48 for cls, enum_val in optimizer_to_enum.items():
49 if isinstance(optimizer_instance, cls):
50 return enum_val
51 raise TypeError(
52 f"Unsupported optimizer type: {type(optimizer_instance).__name__}. "
53 f"Supported types are: {list(optimizer_to_enum.keys())}.")