在TensorFlow中创建三角矩阵

6
我希望创建一个 N * N 的下三角矩阵,其长度为 N*(N+1)/2 的向量。我发现 TensorFlow 有一个名为 tf.contrib.distributions.fill_triangular 的函数可以实现我的目标。
然而,当我输入以下代码时:
from tensorflow.contrib.distributions import fill_triangular

它说

无法导入名称 fill_triangular

我的tensorflow版本是1.4.1。有人可以告诉我在哪里找到fill_triangular或如何使用长度为N *(N + 1)/ 2的向量创建一个 N * N 下三角矩阵吗?


似乎 fill_triangular 只在版本 1.5 中添加了? - suharshs
1个回答

2

fill_triangular目前仅在Tensorflow的主版本中可用(文档);即使是最新的稳定版本1.5 (文档),也没有包含它,更不用说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.]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接