code: def parametrized_modules(
      module: nn.Module,
  ) -> Iterable[Tuple[str, nn.Module]]:
      """
      Recursively iterates over all submodules, returning those that
      have parameters (as opposed to "wrapper modules" that just organize modules).
      """
      yield from (
          (m_name, m)
          for (m_name, m) in module.named_modules()
          if any(p is not None for p in m.parameters(recurse=False))
      )
  
file_path: opacus/opacus/utils/module_utils.py
imports: import io
  import logging
  import sys
  from typing import Dict, Iterable, List, Tuple
  import torch
  import torch.nn
label_desc: Use image node_id 2 for calling a global function with example usage: parametrized_modules(module) without return types