在张量流中创建三角矩阵

时间:2018-01-05 12:40:27

标签: matrix tensorflow

我想创建一个长度为N *(N + 1)/ 2向量的N * N下三角矩阵。我发现tensorflow有一个函数Style来实现我的目标。

然而,当我给出

tf.contrib.distributions.fill_triangular

它说

  

无法导入名称fill_triangular

我的张量流版本是1.4.1。任何人都可以让我知道from tensorflow.contrib.distributions import fill_triangular 在哪里或如何创建长度为N *(N + 1)/ 2向量的N * N下三角矩阵?

1 个答案:

答案 0 :(得分:2)

fill_triangular目前仅在Tensorflow的主版本中可用(docs);它甚至不包括在最新的稳定版本1.5(docs)中,更不用说1.4.1。

您可以使用numpy.tril_indices构建矩阵;这是一个N = 3的例子:

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6]) # this is your N*(N+1)/2 vector
tri = np.zeros((3,3))  # initialize an NxN zero matrix
tri[np.tril_indices(3, 0)] = a
tri

结果是

array([[ 1.,  0.,  0.],
       [ 2.,  3.,  0.],
       [ 4.,  5.,  6.]])