class_docstr: Compute `Y = g(X) = DCT(X)`, where DCT type is indicated by the `type` arg.
  
  The [discrete cosine transform](
  https://en.wikipedia.org/wiki/Discrete_cosine_transform) efficiently applies
  a unitary DCT operator. This can be useful for mixing and decorrelating across
  the innermost event dimension.
  
  The inverse `X = g^{-1}(Y) = IDCT(Y)`, where IDCT is DCT-III for type==2.
  
  This bijector can be interleaved with affine bijectors to build a cascade of
  structured efficient linear layers as in [1].
  
  Note that the operator applied is orthonormal (i.e. `norm='ortho'`).
  
  #### References
  
  [1]: Moczulski M, Denil M, Appleyard J, de Freitas N. ACDC: A structured
       efficient linear layer. In _International Conference on Learning
       Representations_, 2016. https://arxiv.org/abs/1511.05946
docstr: Instantiates the `DiscreteCosineTransform` bijector.
  
  Args:
    dct_type: Python `int`, the DCT type performed by the forward
      transformation. Currently, only 2 and 3 are supported.
    validate_args: Python `bool` indicating whether arguments should be
      checked for correctness.
    name: Python `str` name given to ops managed by this object.
code: def __init__(self, dct_type=2, validate_args=False, name="dct"):
      """Instantiates the `DiscreteCosineTransform` bijector.
  
      Args:
        dct_type: Python `int`, the DCT type performed by the forward
          transformation. Currently, only 2 and 3 are supported.
        validate_args: Python `bool` indicating whether arguments should be
          checked for correctness.
        name: Python `str` name given to ops managed by this object.
      """
      parameters = dict(locals())
      with tf.name_scope(name) as name:
          # TODO(b/115910664): Support other DCT types.
          if dct_type not in (2, 3):
              raise NotImplementedError("`type` must be one of 2 or 3")
          self._dct_type = dct_type
          super(DiscreteCosineTransform, self).__init__(
              forward_min_event_ndims=1,
              inverse_min_event_ndims=1,
              is_constant_jacobian=True,
              validate_args=validate_args,
              parameters=parameters,
              name=name,
          )
  
file_path: probability/tensorflow_probability/python/bijectors/discrete_cosine_transform.py
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 1 to create a new DiscreteCosineTransform object from inherited base classes: bijector with example: obj = DiscreteCosineTransform(dct_type, validate_args, name)