class_docstr: Batch normalisation layer, with trainable mean value 'beta' and
  std 'gamma'.  'beta' is initialised to 0.0 and 'gamma' is initialised
  to 1.0.  This class assumes 'beta' and 'gamma' share the same type_str of
  regulariser.
code: def __init__(
      self,
      regularizer=None,
      moving_decay=0.9,
      eps=1e-5,
      name="batch_norm",
  ):
      super(BNLayer, self).__init__(name=name)
      self.eps = eps
      self.moving_decay = moving_decay
  
      self.initializers = {
          "beta": tf.constant_initializer(0.0),
          "gamma": tf.constant_initializer(1.0),
          "moving_mean": tf.constant_initializer(0.0),
          "moving_variance": tf.constant_initializer(1.0),
      }
  
      self.regularizers = {"beta": regularizer, "gamma": regularizer}
  
file_path: NiftyNet/niftynet/layer/bn.py
imports: from __future__ import absolute_import, print_function
  import tensorflow
  from tensorflow.python.training import moving_averages
  from niftynet.layer.base_layer import TrainableLayer
label_desc: Use image node_id 1 to create a new BNLayer object from inherited base classes: TrainableLayer with example: obj = BNLayer(regularizer, moving_decay, eps, name)