def __init__(self,<EOL>loc=None,<EOL>scale_tril=None,<EOL>validate_args=False,<EOL>allow_nan_stats=True,<EOL>name="<STR_LIT>"):
parameters = dict(locals())<EOL>def _convert_to_tensor(x, name, dtype):<EOL><INDENT>return None if x is None else tf.convert_to_tensor(<EOL>value=x, name=name, dtype=dtype)<EOL><DEDENT>if loc is None and scale_tril is None:<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>with tf.name_scope(name) as name:<EOL><INDENT>with tf.name_scope("<STR_LIT>"):<EOL><INDENT>dtype = dtype_util.common_dtype([loc, scale_tril], tf.float32)<EOL>loc = _convert_to_tensor(loc, name="<STR_LIT>", dtype=dtype)<EOL>scale_tril = _convert_to_tensor(<EOL>scale_tril, name="<STR_LIT>", dtype=dtype)<EOL>if scale_tril is None:<EOL><INDENT>scale = tf.linalg.LinearOperatorIdentity(<EOL>num_rows=distribution_util.dimension_size(loc, -<NUM_LIT:1>),<EOL>dtype=loc.dtype,<EOL>is_self_adjoint=True,<EOL>is_positive_definite=True,<EOL>assert_proper_shapes=validate_args)<EOL><DEDENT>else:<EOL><INDENT>scale = tf.linalg.LinearOperatorLowerTriangular(<EOL>scale_tril,<EOL>is_non_singular=True,<EOL>is_self_adjoint=False,<EOL>is_positive_definite=False)<EOL><DEDENT><DEDENT><DEDENT>super(MultivariateNormalTriL, self).__init__(<EOL>loc=loc,<EOL>scale=scale,<EOL>validate_args=validate_args,<EOL>allow_nan_stats=allow_nan_stats,<EOL>name=name)<EOL>self._parameters = parameters<EOL>
Construct Multivariate Normal distribution on `R^k`.

        The `batch_shape` is the broadcast shape between `loc` and `scale`
        arguments.

        The `event_shape` is given by last dimension of the matrix implied by
        `scale`. The last dimension of `loc` (if provided) must broadcast with this.

        Recall that `covariance = scale @ scale.T`. A (non-batch) `scale` matrix is:

        ```none
        scale = scale_tril
        ```

        where `scale_tril` is lower-triangular `k x k` matrix with non-zero
        diagonal, i.e., `tf.diag_part(scale_tril) != 0`.

        Additional leading dimensions (if any) will index batches.

        Args:
          loc: Floating-point `Tensor`. If this is set to `None`, `loc` is
            implicitly `0`. When specified, may have shape `[B1, ..., Bb, k]` where
            `b >= 0` and `k` is the event size.
          scale_tril: Floating-point, lower-triangular `Tensor` with non-zero
            diagonal elements. `scale_tril` has shape `[B1, ..., Bb, k, k]` where
            `b >= 0` and `k` is the event size.
          validate_args: Python `bool`, default `False`. When `True` distribution
            parameters are checked for validity despite possibly degrading runtime
            performance. When `False` invalid inputs may silently render incorrect
            outputs.
          allow_nan_stats: Python `bool`, default `True`. When `True`,
            statistics (e.g., mean, mode, variance) use the value "`NaN`" to
            indicate the result is undefined. When `False`, an exception is raised
            if one or more of the statistic's batch members are undefined.
          name: Python `str` name prefixed to Ops created by this class.

        Raises:
          ValueError: if neither `loc` nor `scale_tril` are specified.