jax.random.orthogonal#

jax.random.orthogonal(key, n, shape=(), dtype=<class 'float'>, m=None)[source]#

Sample uniformly from the orthogonal group O(n).

If the dtype is complex, sample uniformly from the unitary group U(n).

For unequal rows and columns, this samples a semi-orthogonal matrix instead. That is, if \(A\) is the resulting matrix and \(A^*\) is its conjugate transpose, then:

  • If \(n \leq m\), the rows are mutually orthonormal: \(A A^* = I_n\).

  • If \(m \leq n\), the columns are mutually orthonormal: \(A^* A = I_m\).

Parameters:
  • key (ArrayLike) – a PRNG key used as the random key.

  • n (int) – an integer indicating the number of rows.

  • shape (Shape) – optional, the batch dimensions of the result. Default ().

  • dtype (DTypeLikeFloat) – optional, a float dtype for the returned values (default float64 if jax_enable_x64 is true, otherwise float32).

  • m (int | None | None) – an integer indicating the number of columns. Defaults to n.

Returns:

A random array of shape (*shape, n, n) and specified dtype.

Return type:

Array

References