How to force tensorflow tensors to be symmetric?

2020-08-25 05:21发布

问题:

I have a set of MxM symmetric matrix Variables in a graph whose values I'd like to optimize.

Is there a way to enforce the symmetric condition?

I've thought about adding a term to the loss function to enforce it, but this seems awkward and roundabout. What I'd hoped for is something like tf.matmul(A,B,symmA=True) where only a triangular portion of A would be used and learned. Or maybe something like tf.upperTriangularToFull(A) which would create a dense matrix from a triangular part.

回答1:

What if you do symA = 0.5 * (A + tf.transpose(A))? It is inefficient but at least it's symmetric.