code: def _register_movement_scores(self):
      for module_name, ts in self._target_spaces.items():
          for target_name, target_space in ts.items():
              if is_active_target(target_space):
                  # TODO: add input / output
                  if target_space.type is TargetType.PARAMETER:
                      # TODO: here using a shrinked score to save memory, but need to test the speed.
                      score_val = torch.zeros_like(target_space.target)  # type: ignore
                      if target_space._scaler is not None:
                          score_val = target_space._scaler.shrink(
                              score_val, keepdim=True
                          )
                      target_space._wrapper.register_parameter(
                          MOVEMENT_SCORE_PNAME.format(target_name),
                          torch.nn.Parameter(score_val),
                      )
                      score = target_space._get_wrapper_attr(
                          MOVEMENT_SCORE_PNAME.format(target_name)
                      )
                      self.scores[module_name][target_name] = score
                  else:
                      raise NotImplementedError()
  
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 6 for calling the MovementPruner obj's underlying member method code with example usage: obj._register_movement_scores() without return types