class_docstr: GRN (Global Response Normalization) layer
class_docstr_tok: ["GRN","(","Global","Response","Normalization",")","layer"]
code: def build(self, input_shape: tf.TensorShape = None):
      # PT's `nn.Parameters` must be mapped to a TF layer weight to inherit the same name hierarchy (and vice-versa)
      self.weight = self.add_weight(
          name="weight",
          shape=(1, 1, 1, self.dim),
          initializer=tf.keras.initializers.Zeros(),
      )
      self.bias = self.add_weight(
          name="bias",
          shape=(1, 1, 1, self.dim),
          initializer=tf.keras.initializers.Zeros(),
      )
      return super().build(input_shape)
  
imports: from __future__ import annotations
  from typing import List, Optional, Tuple, Union
  import numpy
  import tensorflow
  from ...activations_tf import get_tf_activation
  from ...modeling_tf_outputs import TFBaseModelOutputWithNoAttention, TFBaseModelOutputWithPooling, TFBaseModelOutputWithPoolingAndNoAttention, TFImageClassifierOutputWithNoAttention
  from ...modeling_tf_utils import TFModelInputType, TFPreTrainedModel, TFSequenceClassificationLoss, get_initializer, keras_serializable, unpack_inputs
  from ...tf_utils import shape_list
  from ...utils import add_code_sample_docstrings, add_start_docstrings, add_start_docstrings_to_model_forward, logging
  from .configuration_convnextv2 import ConvNextV2Config
label_desc: Use image node_id 2 for calling the TFConvNextV2GRN obj's underlying member method code with example usage: obj.build(input_shape) and returns: super