tf.contrib.distributions.fill_triangular
Creates a (batch of) triangular matrix from a vector of inputs.
tf.contrib.distributions.fill_triangular(
x, upper=False, name=None
)
Created matrix can be lower- or upper-triangular. (It is more efficient to create the matrix as upper or lower, rather than transpose.)
Triangular matrix elements are filled in a clockwise spiral. See example, below.
If x.get_shape() is [b1, b2, ..., bB, d] then the output shape is [b1, b2, ..., bB, n, n] where n is such that d = n(n+1)/2, i.e., n = int(np.sqrt(0.25 + 2. * m) - 0.5).
Example:
fill_triangular([1, 2, 3, 4, 5, 6]) # ==> [[4, 0, 0], # [6, 5, 0], # [3, 2, 1]] fill_triangular([1, 2, 3, 4, 5, 6], upper=True) # ==> [[1, 2, 3], # [0, 5, 6], # [0, 0, 4]]
For comparison, a pure numpy version of this function can be found in util_test.py, function _fill_triangular.
| Args | |
|---|---|
x | Tensor representing lower (or upper) triangular elements. |
upper | Python bool representing whether output matrix should be upper triangular (True) or lower triangular (False, default). |
name | Python str. The name to give this op. |
| Returns | |
|---|---|
tril | Tensor with lower (or upper) triangular elements filled from x. |
| Raises | |
|---|---|
ValueError | if x cannot be mapped to a triangular matrix. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/distributions/fill_triangular