我想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变量.
即使没有实现这一功能,一段自编代码也会有所帮助!
谢谢!
您可以使用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)
| 归档时间: |
|
| 查看次数: |
1220 次 |
| 最近记录: |