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