class_docstr: Nonnegative parameterization as needed for GDN parameters.
  
  The variable is subjected to an invertible transformation that slows down the
  learning rate for small values.
  
  Attributes:
    minimum: Float. The `minimum` parameter provided on initialization.
    offset: Float. The `offset` parameter provided on initialization.
    variable: `tf.Variable`. The reparameterized variable.
docstr: Initializer.
  
  Args:
    initial_value: `tf.Tensor` or `None`. The initial value of the kernel. If
      not provided, its `shape` must be given, and the initial value of the
      parameter will be undefined.
    name: String. The name of the parameter.
    minimum: Float. Lower bound for the parameter (defaults to zero).
    offset: Float. Offset added to the reparameterization. The
      parameterization of beta/gamma as their square roots lets the training
      slow down when values are close to zero, which is desirable as small
      values in the denominator can lead to a situation where gradient noise
      on beta/gamma leads to extreme amounts of noise in the GDN activations.
      However, without the offset, we would get zero gradients if any elements
      of beta or gamma were exactly zero, and thus the training could get
      stuck. To prevent this, we add this small constant. The default value
      was empirically determined as a good starting point. Making it bigger
      potentially leads to more gradient noise on the activations, making it
      too small may lead to numerical precision issues.
    shape: `tf.TensorShape` or compatible. Ignored unless `initial_value is
      None`.
    dtype: `tf.dtypes.DType` or compatible. DType of this parameter. If not
      given, inferred from `initial_value`.
docstr_tok: ["Initializer",".","Args",":","initial_value",":","`","tf.Tensor","`","or","`","None","`",".","The","initial","value","of","the","kernel",".","If","not","provided",",","its","`","shape","`","must","be","given",",","and","the","initial","value","of","the","parameter","will","be","undefined",".","name",":","String",".","The","name","of","the","parameter",".","minimum",":","Float",".","Lower","bound","for","the","parameter","(","defaults","to","zero",")",".","offset",":","Float",".","Offset","added","to","the","reparameterization",".","The","parameterization","of","beta\/gamma","as","their","square","roots","lets","the","training","slow","down","when","values","are","close","to","zero",",","which","is","desirable","as","small","values","in","the","denominator","can","lead","to","a","situation","where","gradient","noise","on","beta\/gamma","leads","to","extreme","amounts","of","noise","in","the","GDN","activations",".","However",",","without","the","offset",",","we","would","get","zero","gradients","if","any","elements","of","beta","or","gamma","were","exactly","zero",",","and","thus","the","training","could","get","stuck",".","To","prevent","this",",","we","add","this","small","constant",".","The","default","value","was","empirically","determined","as","a","good","starting","point",".","Making","it","bigger","potentially","leads","to","more","gradient","noise","on","the","activations",",","making","it","too","small","may","lead","to","numerical","precision","issues",".","shape",":","`","tf.TensorShape","`","or","compatible",".","Ignored","unless","`","initial_value","is","None","`",".","dtype",":","`","tf.dtypes.DType","`","or","compatible",".","DType","of","this","parameter",".","If","not","given",",","inferred","from","`","initial_value","`","."]
code: def __init__(
      self,
      initial_value,
      name=None,
      minimum=0.0,
      offset=2**-18,
      shape=None,
      dtype=None,
  ):
      """Initializer.
  
      Args:
        initial_value: `tf.Tensor` or `None`. The initial value of the kernel. If
          not provided, its `shape` must be given, and the initial value of the
          parameter will be undefined.
        name: String. The name of the parameter.
        minimum: Float. Lower bound for the parameter (defaults to zero).
        offset: Float. Offset added to the reparameterization. The
          parameterization of beta/gamma as their square roots lets the training
          slow down when values are close to zero, which is desirable as small
          values in the denominator can lead to a situation where gradient noise
          on beta/gamma leads to extreme amounts of noise in the GDN activations.
          However, without the offset, we would get zero gradients if any elements
          of beta or gamma were exactly zero, and thus the training could get
          stuck. To prevent this, we add this small constant. The default value
          was empirically determined as a good starting point. Making it bigger
          potentially leads to more gradient noise on the activations, making it
          too small may lead to numerical precision issues.
        shape: `tf.TensorShape` or compatible. Ignored unless `initial_value is
          None`.
        dtype: `tf.dtypes.DType` or compatible. DType of this parameter. If not
          given, inferred from `initial_value`.
      """
      super().__init__(name=name)
      self._minimum = float(minimum)
      self._offset = float(offset)
      if initial_value is None:
          if shape is None:
              raise ValueError(
                  "If initial_value is None, shape must be specified."
              )
          initial_value = tf.zeros(shape, dtype=dtype)
      else:
          initial_value = tf.convert_to_tensor(
              initial_value, dtype=dtype
          )
      pedestal = tf.constant(
          self.offset**2, dtype=initial_value.dtype
      )
      initial_value = tf.math.sqrt(
          tf.math.maximum(initial_value + pedestal, pedestal)
      )
      if name is not None:
          name = f"reparam_{name}"
      self.variable = tf.Variable(initial_value, name=name)
  
imports: import abc
  from typing import Any, Dict
  import tensorflow
  from tensorflow_compression.python.ops import math_ops
label_desc: Use image node_id 1 to create a new GDNParameter object from inherited base classes: Parameter with example: obj = GDNParameter(initial_value, name, minimum, offset, shape, dtype)