张量流对称矩阵

use*_*207 6 matrix tensorflow

我想n*n在TensorFlow中创建一个对称矩阵并训练这个矩阵.实际上,我应该只训练(n+1)*n/2参数.我该怎么做?

我看到一些以前的线程建议执行以下操作:

X = tf.Variable(tf.random_uniform([d,d], minval=-.1, maxval=.1, dtype=tf.float64))

X_symm = 0.5 * (X + tf.transpose(X))
Run Code Online (Sandbox Code Playgroud)

但是,这意味着我必须训练n*n变量,而不是n*(n+1)/2变量.

即使没有实现这一功能,一段自编代码也会有所帮助!

谢谢!

gde*_*lab 6

您可以使用tf.matrix_band_part(input, 0, -1)来创建一个正方形一个上三角矩阵,所以这段代码将允许你训练n(n+1)/2变量,虽然它有你创建 n*n

X = tf.Variable(tf.random_uniform([d,d], minval=-.1, maxval=.1, dtype=tf.float64))
X_upper = tf.matrix_band_part(X, 0, -1)
X_symm = 0.5 * (X_upper + tf.transpose(X_upper))
Run Code Online (Sandbox Code Playgroud)