在张量流中创建三角矩阵

Min*_*Yin 6 matrix tensorflow

我想创建一个长度为 N*(N+1)/2 向量的 N * N 下三角矩阵。我发现 tensorflow 有一个功能tf.contrib.distributions.fill_triangular可以实现我的目标。

但是当我给

from tensorflow.contrib.distributions import fill_triangular
Run Code Online (Sandbox Code Playgroud)

它说

无法导入名称 fill_triangular

我的 tensorflow 版本是 1.4.1。谁能告诉我在哪里fill_triangular或如何创建一个长度为 N*(N+1)/2 向量的 N * N 下三角矩阵?

des*_*aut 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
Run Code Online (Sandbox Code Playgroud)

结果是

array([[ 1.,  0.,  0.],
       [ 2.,  3.,  0.],
       [ 4.,  5.,  6.]])
Run Code Online (Sandbox Code Playgroud)