gpt4 book ai didi

python - 在 TensorFlow 中用单位对角矩阵创建下三角

转载 作者:行者123 更新时间:2023-12-05 06:32:01 24 4
gpt4 key购买 nike

我想用向量中的单位对角线元素创建一个下三角矩阵。

来自向量

[a_21, a_31, a_32, ..., a_N1, ... , a_N(N-1)]

如何将其转化为单位对角线元素形式的下三角矩阵,

[[1, 0, ..., 0], [a_21, 1, ..., 0], [a_31, a_32, 1, ..., 0], ..., [a_N1, a_N2, ... , a_N(N-1), 1]]

到目前为止 NumPy

import numpy
A = np.eye(N)
idx = np.tril_indices(N, k=-1)
A[idx] = X

但是,TensorFlow 不支持项目分配。我认为 fill_triangulartf.reshape 有助于解决问题,但我不确定该怎么做。

最佳答案

我找到了类似的问题和答案: Packing array into lower triangular of a tensor

基于上面的页面,我做了一个将向量转换为具有单位对角线元素的下三角形的函数:

def flat_to_mat_TF(vector, n):
idx = list(zip(*np.tril_indices(n, k=-1)))
idx = tf.constant([list(i) for i in idx], dtype=tf.int64)
values = tf.constant(vector, dtype=tf.float32)

dense = tf.sparse_to_dense(sparse_indices=idx, output_shape=[n, n], \
sparse_values=values, default_value=0, \
validate_indices=True)
mat = tf.matrix_set_diag(dense, tf.cast(tf.tile([1], [n]), dtype=tf.float32))
return mat

如果输入向量已经是张量,则可以消除 values = tf.constant()

关于python - 在 TensorFlow 中用单位对角矩阵创建下三角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51571032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com