PSD-Like Layers and Analytic Layer Inversion

Cotangent-lift PSDLayer and TransposePSDLayer layers change the dimension of a canonical symplectic vector space using a single block matrix $\Phi \in \mathrm{St}(n, N)$, while inverse_layer constructs the exact analytic inverse (or symplectic transpose) of GradientLayerQ, GradientLayerP, SymplecticAttentionQ, SymplecticAttentionP, and PSDLayer sharing the same parameter NamedTuple.

Library Functions

GeometricMachineLearning.TransposePSDLayer — Type
TransposePSDLayer(input_dim, output_dim)

Make an instance of TransposePSDLayer.

This layer is the analytic transpose (and left inverse on the image of PSDLayer) of PSDLayer(output_dim, input_dim), sharing the same parameter tuple ps = (weight = Φ,) with $\Phi \in \mathrm{St}(n, N)$:

\[A^T = \begin{bmatrix} \Phi^T & \mathbb{O} \\ \mathbb{O} & \Phi^T \end{bmatrix}.\]

source
GeometricMachineLearning.inverse_layer — Function
inverse_layer(l)

Return the analytic symplectic inverse (or Stiefel transpose for PSDLayer) of a layer l or layer type, sharing the same parameter NamedTuple ps without duplicating or mutating weights:

source