code: def init_training(self, training_data_collection, kwargs):
      # Outputs
      add_parameter(self, kwargs, "output_model_filepath")
  
      # Training Parameters
      add_parameter(self, kwargs, "num_epochs", 100)
      add_parameter(self, kwargs, "training_steps_per_epoch", 10)
      add_parameter(self, kwargs, "training_batch_size", 16)
      add_parameter(self, kwargs, "callbacks")
  
      self.callbacks = self.get_callbacks(
          backend="tensorflow",
          model=self,
          batch_size=self.training_batch_size,
          **kwargs,
      )
  
      self.create_data_generators(
          training_data_collection,
          training_batch_size=self.training_batch_size,
          training_steps_per_epoch=self.training_steps_per_epoch,
      )
  
      return
  
imports: import math
  import numpy
  import tensorflow
  import os
  import imageio
  import keras
  import scipy
  from tqdm import tqdm
  from collections import defaultdict
  from deepneuro.utilities.util import add_parameter
  from deepneuro.models.blocks import generator, discriminator
  from deepneuro.models.cost_functions import wasserstein_loss
  from deepneuro.models.gan import GAN
  from deepneuro.models.ops import upscale2d, downscale2d
  from deepneuro.utilities.visualize import check_data
label_desc: Use image node_id 3 for calling the PGGAN obj's underlying member method code with example usage: obj.init_training(training_data_collection, kwargs) without return types