我想创建一个长度为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下三角矩阵?
答案 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.]])