code: def names2params(
      self,
      wrapped_model: Module,
      origin2wrapped_name_map: Dict | None,
      params: List[Dict],
  ) -> List[Dict]:
      param_groups = deepcopy(params)
      origin2wrapped_name_map = (
          origin2wrapped_name_map if origin2wrapped_name_map else {}
      )
      for param_group in param_groups:
          wrapped_names = [
              origin2wrapped_name_map.get(name, name)
              for name in param_group["params"]
          ]
          param_group["params"] = [
              p
              for name, p in wrapped_model.named_parameters()
              if name in wrapped_names
          ]
      return param_groups
  
imports: from __future__ import annotations
  from copy import deepcopy
  from typing import Callable, Dict, List, Type
  from torch import Tensor
  from torch.nn import Module
  from torch.optim import Optimizer
  from nni.common.serializer import is_traceable
  from nni.common.types import SCHEDULER
label_desc: Use image node_id 3 for calling the OptimizerConstructHelper obj's underlying member method code with example usage: obj.names2params(wrapped_model, origin2wrapped_name_map, params) and returns: param_groups