TF支持通过tf.diag
创建对角矩阵,该对角矩阵通过可选参数k
支持主角以外的对角线。
但是,此方法允许创建具有单个对角线的矩阵。通过指定多个对角线来创建矩阵的推荐方法是什么?
我可以想到两种方式,在我看来,这两种方式都不是最优的:分配每个元素(例如for i,j in indices: T1[i,j] = diags[j-i][j]
)或对角矩阵求和(例如T1 = tf.reduce_sum([tf.diag(d, k) for k,d in diags])
)
我知道tf.scatter_update
存在,但是我需要编写一个构造函数来一次创建张量,而tf.scatter_update
会在每次调用矩阵时引起矩阵的更新。
编辑:我也对更高阶张量的更一般情况感兴趣,例如T1[:,:,i,j] = diags[j-i][j]