code: def __init__(
      self,
      keep_bias: bool = False,
      norm_type: Union[float, List[float]] = 2.0,
  ) -> None:
      super().__init__()
      self.keep_bias = keep_bias
      self.norm_type = (
          [norm_type]
          if isinstance(norm_type, (float, int))
          else norm_type
      )
  
      self.stats_names = [
          "mean",
          "var",
          "min",
          "abs_min",
          "max",
          "abs_max",
      ]
      self.stats_names += [f"l{norm}" for norm in self.norm_type]
  
      self.layers = []
  
imports: import csv
  import os
  from typing import Dict, List, Optional, TextIO, Union
  import torch
  from poutyne.framework.callbacks._utils import atomic_lambda_save
  from poutyne.framework.callbacks.callbacks import Callback
label_desc: Use image node_id 1 to create a new GradientLoggerBase object from inherited base classes: Callback with example: obj = GradientLoggerBase(keep_bias, norm_type)