## Class `FillTriangular`

Inherits From: `Bijector`

Defined in `tensorflow/contrib/distributions/python/ops/bijectors/fill_triangular.py`

.

Transforms vectors to triangular.

Triangular matrix elements are filled in a clockwise spiral.

Given input with shape `batch_shape + [d]`

, produces output with
shape `batch_shape + [n, n]`

, where
`n = (-1 + sqrt(1 + 8 * d))/2`

.
This follows by solving the quadratic equation
`d = 1 + 2 + ... + n = n * (n + 1)/2`

.

#### Example

```
b = tfb.FillTriangular(upper=False)
b.forward([1, 2, 3, 4, 5, 6])
# ==> [[4, 0, 0],
# [6, 5, 0],
# [3, 2, 1]]
b = tfb.FillTriangular(upper=True)
b.forward([1, 2, 3, 4, 5, 6])
# ==> [[1, 2, 3],
# [0, 5, 6],
# [0, 0, 4]]
```

## Properties

`dtype`

dtype of `Tensor`

s transformable by this distribution.

`forward_min_event_ndims`

Returns the minimal number of dimensions bijector.forward operates on.

`graph_parents`

Returns this `Bijector`

's graph_parents as a Python list.

`inverse_min_event_ndims`

Returns the minimal number of dimensions bijector.inverse operates on.

`is_constant_jacobian`

Returns true iff the Jacobian matrix is not a function of x.

#### Returns:

: Python`is_constant_jacobian`

`bool`

.

`name`

Returns the string name of this `Bijector`

.

`validate_args`

Returns True if Tensor arguments will be validated.

## Methods

`__init__`

```
__init__(
upper=False,
validate_args=False,
name='fill_triangular'
)
```

Instantiates the `FillTriangular`

bijector. (deprecated)

THIS FUNCTION IS DEPRECATED. It will be removed after 2018-10-01.
Instructions for updating:
The TensorFlow Distributions library has moved to TensorFlow Probability (https://github.com/tensorflow/probability). You should update all references to use `tfp.distributions`

instead of `tf.contrib.distributions`

.

#### Args:

: Python`upper`

`bool`

representing whether output matrix should be upper triangular (`True`

) or lower triangular (`False`

, default).: Python`validate_args`

`bool`

indicating whether arguments should be checked for correctness.: Python`name`

`str`

name given to ops managed by this object.

`forward`

```
forward(
x,
name='forward'
)
```

Returns the forward `Bijector`

evaluation, i.e., X = g(Y).

#### Args:

:`x`

`Tensor`

. The input to the "forward" evaluation.: The name to give this op.`name`

#### Returns:

`Tensor`

.

#### Raises:

: if`TypeError`

`self.dtype`

is specified and`x.dtype`

is not`self.dtype`

.: if`NotImplementedError`

`_forward`

is not implemented.

`forward_event_shape`

```
forward_event_shape(input_shape)
```

Shape of a single sample from a single batch as a `TensorShape`

.

Same meaning as `forward_event_shape_tensor`

. May be only partially defined.

#### Args:

:`input_shape`

`TensorShape`

indicating event-portion shape passed into`forward`

function.

#### Returns:

:`forward_event_shape_tensor`

`TensorShape`

indicating event-portion shape after applying`forward`

. Possibly unknown.

`forward_event_shape_tensor`

```
forward_event_shape_tensor(
input_shape,
name='forward_event_shape_tensor'
)
```

Shape of a single sample from a single batch as an `int32`

1D `Tensor`

.

#### Args:

:`input_shape`

`Tensor`

,`int32`

vector indicating event-portion shape passed into`forward`

function.: name to give to the op`name`

#### Returns:

:`forward_event_shape_tensor`

`Tensor`

,`int32`

vector indicating event-portion shape after applying`forward`

.

`forward_log_det_jacobian`

```
forward_log_det_jacobian(
x,
event_ndims,
name='forward_log_det_jacobian'
)
```

Returns both the forward_log_det_jacobian.

#### Args:

:`x`

`Tensor`

. The input to the "forward" Jacobian determinant evaluation.: Number of dimensions in the probabilistic events being transformed. Must be greater than or equal to`event_ndims`

`self.forward_min_event_ndims`

. The result is summed over the final dimensions to produce a scalar Jacobian determinant for each event, i.e. it has shape`x.shape.ndims - event_ndims`

dimensions.: The name to give this op.`name`

#### Returns:

`Tensor`

, if this bijector is injective.
If not injective this is not implemented.

#### Raises:

: if`TypeError`

`self.dtype`

is specified and`y.dtype`

is not`self.dtype`

.: if neither`NotImplementedError`

`_forward_log_det_jacobian`

nor {`_inverse`

,`_inverse_log_det_jacobian`

} are implemented, or this is a non-injective bijector.

`inverse`

```
inverse(
y,
name='inverse'
)
```

Returns the inverse `Bijector`

evaluation, i.e., X = g^{-1}(Y).

#### Args:

:`y`

`Tensor`

. The input to the "inverse" evaluation.: The name to give this op.`name`

#### Returns:

`Tensor`

, if this bijector is injective.
If not injective, returns the k-tuple containing the unique
`k`

points `(x1, ..., xk)`

such that `g(xi) = y`

.

#### Raises:

: if`TypeError`

`self.dtype`

is specified and`y.dtype`

is not`self.dtype`

.: if`NotImplementedError`

`_inverse`

is not implemented.

`inverse_event_shape`

```
inverse_event_shape(output_shape)
```

Shape of a single sample from a single batch as a `TensorShape`

.

Same meaning as `inverse_event_shape_tensor`

. May be only partially defined.

#### Args:

:`output_shape`

`TensorShape`

indicating event-portion shape passed into`inverse`

function.

#### Returns:

:`inverse_event_shape_tensor`

`TensorShape`

indicating event-portion shape after applying`inverse`

. Possibly unknown.

`inverse_event_shape_tensor`

```
inverse_event_shape_tensor(
output_shape,
name='inverse_event_shape_tensor'
)
```

Shape of a single sample from a single batch as an `int32`

1D `Tensor`

.

#### Args:

:`output_shape`

`Tensor`

,`int32`

vector indicating event-portion shape passed into`inverse`

function.: name to give to the op`name`

#### Returns:

:`inverse_event_shape_tensor`

`Tensor`

,`int32`

vector indicating event-portion shape after applying`inverse`

.

`inverse_log_det_jacobian`

```
inverse_log_det_jacobian(
y,
event_ndims,
name='inverse_log_det_jacobian'
)
```

Returns the (log o det o Jacobian o inverse)(y).

Mathematically, returns: `log(det(dX/dY))(Y)`

. (Recall that: `X=g^{-1}(Y)`

.)

Note that `forward_log_det_jacobian`

is the negative of this function,
evaluated at `g^{-1}(y)`

.

#### Args:

:`y`

`Tensor`

. The input to the "inverse" Jacobian determinant evaluation.: Number of dimensions in the probabilistic events being transformed. Must be greater than or equal to`event_ndims`

`self.inverse_min_event_ndims`

. The result is summed over the final dimensions to produce a scalar Jacobian determinant for each event, i.e. it has shape`y.shape.ndims - event_ndims`

dimensions.: The name to give this op.`name`

#### Returns:

`Tensor`

, if this bijector is injective.
If not injective, returns the tuple of local log det
Jacobians, `log(det(Dg_i^{-1}(y)))`

, where `g_i`

is the restriction
of `g`

to the `ith`

partition `Di`

.

#### Raises:

: if`TypeError`

`self.dtype`

is specified and`y.dtype`

is not`self.dtype`

.: if`NotImplementedError`

`_inverse_log_det_jacobian`

is not implemented.