code: def _collect_data(self) -> Dict[str, Dict[str, torch.Tensor]]:
      data = defaultdict(dict)
      for module_name, ts in self._target_spaces.items():
          for target_name, target_space in ts.items():
              score: torch.Tensor = getattr(target_space._wrapper, MOVEMENT_SCORE_PNAME.format(target_name), None)  # type: ignore
              if score is not None:
                  data[module_name][
                      target_name
                  ] = score.clone().detach()
      return data
  
imports: from __future__ import annotations
  from collections import defaultdict
  import logging
  from typing import Dict, List, overload
  import torch
  from torch.optim import Adam
  from .scheduled_pruner import ScheduledPruner
  from .tools import is_active_target, generate_sparsity
  from ..base.compressor import Compressor
  from ..base.target_space import TargetType
  from ..base.wrapper import ModuleWrapper
  from ..utils import Evaluator, _EVALUATOR_DOCSTRING
label_desc: Use image node_id 11 for calling the MovementPruner obj's underlying member method code with example usage: obj._collect_data() and returns: data