code: def _inverse_lower_triangular(M: tf.Tensor) -> tf.Tensor:
      """
      Take inverse of lower triangular (e.g. Cholesky) matrix. This function
      broadcasts over the first index.
  
      :param M: Tensor with lower triangular structure of shape [D, N, N]
      :return: The inverse of the Cholesky decomposition. Same shape as input.
      """
      if M.shape.ndims != 3:  # pragma: no cover
          raise ValueError(
              "Number of dimensions for input is required to be 3."
          )
      D, N = tf.shape(M)[0], tf.shape(M)[1]
      I_dnn = tf.eye(N, dtype=M.dtype)[None, :, :] * tf.ones(
          (D, 1, 1), dtype=M.dtype
      )
      return tf.linalg.triangular_solve(M, I_dnn)
  
imports: import abc
  import functools
  from typing import Any, Callable, Dict, Optional, Sequence, Tuple, Union
  import tensorflow
  from check_shapes import check_shapes
  from ..base import AnyNDArray, Parameter, _to_constrained
label_desc: Use image node_id 8 for calling a global function with example usage: _inverse_lower_triangular(M) and returns: tf