class_docstr: Tangent space of M for a distribution with axis-aligned subspace support.
  
  This subclass covers cases where the support of the distribution is
  on an axis-aligned subspace, such as lower-triangular matrices. In
  this special case we can represent the standard basis of the
  subspace with a mask. The subclass is designed to support axis-aligned
  injections like the `FillTriangular` `Bijector`.
  
  Any Bijector calling the `transform_projection` method is expected
  to define an `experimental_update_live_dimensions` method.
class_docstr_tok: ["Tangent","space","of","M","for","a","distribution","with","axis-aligned","subspace","support",".","This","subclass","covers","cases","where","the","support","of","the","distribution","is","on","an","axis-aligned","subspace",",","such","as","lower-triangular","matrices",".","In","this","special","case","we","can","represent","the","standard","basis","of","the","subspace","with","a","mask",".","The","subclass","is","designed","to","support","axis-aligned","injections","like","the","`","FillTriangular","`","`","Bijector","`",".","Any","Bijector","calling","the","`","transform_projection","`","method","is","expected","to","define","an","`","experimental_update_live_dimensions","`","method","."]
code: def _transform_projection(self, x, f, **kwargs):
      if not hasattr(f, "experimental_update_live_dimensions"):
          msg = (
              "When calling `transform_projection` the Bijector must implement "
              "the `experimental_update_live_dimensions` method."
          )
          raise NotImplementedError(msg)
      new_live_dimensions = f.experimental_update_live_dimensions(
          self._axis_mask, **kwargs
      )
      if all(tf.get_static_value(new_live_dimensions)):
          # Special-case a bijector (direction) that knows that the result
          # of the projection will be a full space
          return 0, FullSpace()
      else:
          return 0, AxisAlignedSpace(new_live_dimensions)
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.internal import tensorshape_util
label_desc: Use image node_id 3 for calling the AxisAlignedSpace obj's underlying member method code with example usage: obj._transform_projection(x, f) and returns: int,  FullSpace, int,  AxisAlignedSpace