torch.nn.utils.parametrizations.orthogonal
torch.nn.utils.parametrizations.orthogonal(module, name='weight', orthogonal_map=None, *, use_trivialization=True)
Applies an orthogonal or unitary parametrization to a matrix or a
   batch of matrices.
Letting \mathbb{K} be \mathbb{R} or \mathbb{C}, the parametrized
   matrix Q \in \mathbb{K}^{m \times n} is orthogonal as
  \begin{align*}     Q^{\text{H}}Q &= \mathrm{I}_n
  \mathrlap{\qquad \text{if }m \geq n}\\     QQ^{\text{H}} &=
  \mathrm{I}_m \mathrlap{\qquad \text{if }m < n} \end{align*}

where Q^{\text{H}} is the conjugate transpose when Q is complex and
   the transpose when Q is real-valued, and \mathrm{I}_n is the
   n-dimensional identity matrix. In plain words, Q will have
   orthonormal columns whenever m \geq n and orthonormal rows
   otherwise.
If the tensor has more than two dimensions, we consider it as a
   batch of matrices of shape (..., m, n).