<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register_nonzero_counter(network, stats):
 """ Register forward hooks to count the number of nonzero floating points values from all the tensors used by the given network during inference. :param network: The network to attach the counter :param stats: Dictionary holding the counter. """

  if hasattr(network, "__counter_nonzero__"):
    raise ValueError("nonzero counter was already registered for this network")

  if not isinstance(stats, dict):
    raise ValueError("stats must be a dictionary")

  network.__counter_nonzero__ = stats
  handles = []
  for name, module in network.named_modules():
    handles.append(module.register_forward_hook(_nonzero_counter_hook))
    if network != module:
      if hasattr(module, "__counter_nonzero__"):
        raise ValueError("nonzero counter was already registered for this module")

      child_data = dict()
      network.__counter_nonzero__[name] = child_data
      module.__counter_nonzero__ = child_data

  network.__counter_nonzero_handles__ = handles