code: def _run_n_batch(self, num_batch):
      for batch_number in range(1, num_batch + 1):
          layer_1_params = MagicMock()
          layer_1_params.grad = self.layer_1_gradients * batch_number
          layer_2_params = MagicMock()
          layer_2_params.grad = self.layer_2_gradients * batch_number
  
          named_parameters = (
              (n, p)
              for n, p in [
                  (self.layer_1_name, layer_1_params),
                  (self.layer_2_name, layer_2_params),
              ]
          )
  
          self.tracker.batch_statistic_upgrade(
              named_parameters=named_parameters
          )
  
imports: import math
  from tempfile import TemporaryDirectory
  from unittest import TestCase, skipIf
  from unittest.mock import ANY, MagicMock, call
  import torch
  import torch.nn
  from tests.framework.tools import some_data_generator
  from poutyne import GradientTracker, Model, TensorBoardGradientTracker, WeightsGradientsStatsTracker
label_desc: Use image node_id 3 for calling the GradientStatsTrackerTest obj's underlying member method code with example usage: obj._run_n_batch(num_batch) without return types