e2cnn.gspaces
This subpackage implements G-spaces as a user interface for defining spaces and their symmetries. The user typically instantiates a subclass of GSpace to specify the symmetries considered and uses it to instanciate equivariant neural network modules (see e2cnn.nn).
This subpackage depends on e2cnn.group and e2cnn.kernels.
Contents
Abstract Group Space
- class GSpace(fibergroup, dimensionality, name)[source]
 Abstract class for G-spaces.
A
GSpacedescribes the space where a signal lives (e.g. \(\R^2\) for planar images) and its symmetries (e.g. rotations or reflections). As an Euclidean base space is assumed, a G-space is fully specified by thedimensionalityof the space and a choice of origin-preserving symmetry group (fibergroup).See also
Note
Mathematically, this class describes a Principal Bundle \(\pi : (\R^D, +) \rtimes G \to \mathbb{R}^D, tg \mapsto tG\), with the Euclidean space \(\mathbb{R}^D\) (where \(D\) is the
dimensionality) as base space and \(G\) as fiber group (fibergroup). For more details on this interpretation we refer to A General Theory of Equivariant CNNs On Homogeneous Spaces.- Parameters
 - Variables
 
- abstract restrict(id)[source]
 Build the
GSpaceassociated with the subgroup of the current fiber group identified by the inputid. This reduces the level of symmetries of the base space to be considered.Check the
restrictmethod’s documentation in the non-abstract subclass used for a description of the parameterid.- Parameters
 id – id of the subgroup
- Returns
 a tuple containing
gspace: the restricted gspace
back_map: a function mapping an element of the subgroup to itself in the fiber group of the original space
subgroup_map: a function mapping an element of the fiber group of the original space to itself in the subgroup (returns
Noneif the element is not in the subgroup)
- featurefield_action(input, repr, element)[source]
 This method implements the action of the symmetry group on a feature field defined over the basespace of this G-space. It includes both an action over the basespace (e.g. a rotation of the points on the plane) and a transformation of the channels by left-multiplying them with a representation of the fiber group.
The method takes as input a tensor (
input), a representation (repr) and anelementof the fiber group. The tensorinputis the feature field to be transformed and needs to be compatible with this G-space and the representation (i.e. its number of channels equals the size of that representation).elementneeds to belong to the fiber group: checke2cnn.group.Group.is_element(). This method returns a transformed tensor through the action ofelement.More precisely, given an input tensor, interpreted as an \(c\)-dimensional signal \(f: \R^D \to \mathbb{R}^c\) defined over the base space \(\R^D\), a representation \(\rho: G \to \mathbb{R}^{c \times c}\) of \(G\) and an element \(g \in G\) of the fiber group, the method returns the transformed signal \(f'\) defined as:
\[f'(x) := \rho(g) f(g^{-1} x)\]Note
Mathematically, this method transforms the input with the induced representation from the input
repr(\(\rho\)) of the symmetry group (\(G\)) to the total space (\(P\)), i.e. with \(Ind_{G}^{P} \rho\). For more details on this, see General E(2)-Equivariant Steerable CNNs or A General Theory of Equivariant CNNs On Homogeneous Spaces.- Parameters
 input (ndarray) – input tensor
repr (Representation) – representation of the fiber group
element – element of the fiber group
- Returns
 the transformed tensor
- abstract build_kernel_basis(in_repr, out_repr, **kwargs)[source]
 Builds a basis for the space of the equivariant kernels with respect to the symmetries described by this
GSpace.A kernel \(\kappa\) equivariant to a group \(G\) needs to satisfy the following equivariance constraint:
\[\kappa(gx) = \rho_\text{out}(g) \kappa(x) \rho_\text{in}(g)^{-1} \qquad \forall g \in G, x \in \R^D\]where \(\rho_\text{in}\) is
in_reprwhile \(\rho_\text{out}\) isout_repr.This method relies on the functionalities implemented in
e2cnn.kernelsand returns an instance ofKernelBasis.- Parameters
 in_repr (Representation) – the representation associated with the input field
out_repr (Representation) – the representation associated with the output field
**kwargs – additional keyword arguments for the equivariance contraint solver
- Returns
 a basis for space of equivariant convolutional kernels
- property irreps
 Dictionary containing all the already built irreducible representations of the fiber group of this space.
See also
See
e2cnn.group.Group.irrepsfor more details
- property representations
 Dictionary containing all the already built representations of the fiber group of this space.
See also
See
e2cnn.group.Group.representationsfor more details
- property trivial_repr: e2cnn.group.representation.Representation
 The trivial representation of the fiber group of this space.
- irrep(*id)[source]
 Builds the irreducible representation (
IrreducibleRepresentation) of the fiber group identified by the input arguments.See also
This method is a wrapper for
e2cnn.group.Group.irrep(). See its documentation for more details. Check the documentation ofirrep()of the specific fiber group used for more information on the validid.- Parameters
 *id – parameters identifying the irrep.
- property regular_repr: e2cnn.group.representation.Representation
 The regular representation of the fiber group of this space.
- quotient_repr(subgroup_id)[source]
 Builds the quotient representation of the fiber group of this space with respect to the subgroup identified by
subgroup_id.Check the
restrict()method’s documentation in the non-abstract subclass used for a description of the parametersubgroup_id.See also
See
e2cnn.group.Group.quotient_representationfor more details on the representation.- Parameters
 subgroup_id – identifier of the subgroup
- induced_repr(subgroup_id, repr)[source]
 Builds the induced representation of the fiber group of this space from the representation
reprof the subgroup identified bysubgroup_id.Check the
restrict()method’s documentation in the non-abstract subclass used for a description of the parametersubgroup_id.See also
See
e2cnn.group.Group.induced_representationfor more details on the representation.- Parameters
 subgroup_id – identifier of the subgroup
repr (Representation) – the representation of the subgroup to induce
- property testing_elements
 
Group Actions on the Plane
- class GeneralOnR2(fibergroup, name)[source]
 Bases:
e2cnn.gspaces.gspace.GSpaceAbstract class for the G-spaces which define the symmetries of the plane \(\R^2\).
- Parameters
 
- build_kernel_basis(in_repr, out_repr, sigma, rings, **kwargs)[source]
 Builds a basis for the space of the equivariant kernels with respect to the symmetries described by this
GSpace.A kernel \(\kappa\) equivariant to a group \(G\) needs to satisfy the following equivariance constraint:
\[\kappa(gx) = \rho_\text{out}(g) \kappa(x) \rho_\text{in}(g)^{-1} \qquad \forall g \in G, x \in \R^2\]where \(\rho_\text{in}\) is
in_reprwhile \(\rho_\text{out}\) isout_repr.Because the equivariance constraints only restrict the angular part of the kernels, any radial profile is permitted. The basis for the radial profile used here contains rings with different radii (
rings) associated with (possibly different) widths (sigma). A ring is implemented as a Gaussian function over the radial component, centered at one radius (see alsoGaussianRadialProfile).Note
This method is a wrapper for the functions building the bases which are defined in e2cnn.kernels:
- Parameters
 in_repr (Representation) – the input representation
out_repr (Representation) – the output representation
sigma (list or float) – parameters controlling the width of each ring of the radial profile. If only one scalar is passed, it is used for all rings
rings (list) – radii of the rings defining the radial profile
**kwargs – Group-specific keywords arguments for
_basis_generatormethod
- Returns
 the analytical basis
- build_diffop_basis(in_repr, out_repr, max_power, discretization, **kwargs)[source]
 Builds a basis for the space of the equivariant PDOs with respect to the symmetries described by this
GSpace.A \(G\)-equivariant PDO \(D(P)\) for a matrix of polynomials \(P\), mapping between an input field, transforming under \(\rho_\text{in}\) (
in_repr), and an output field, transforming under \(\rho_\text{out}\) (out_repr), satisfies the following constraint:\[P(gx) = \rho_\text{out}(g) P(x) \rho_\text{in}(g)^{-1} \qquad \forall g \in G, \forall x \in X\]for \(G \leq O(d)\).
A complete basis is obtained by combining certain PDOs with powers of the Laplacian operator.
max_powerdescribes the maximum power of the Laplacian to use when building the basis.Note
This method is a wrapper for the functions building the bases which are defined in e2cnn.diffops:
- Parameters
 in_repr (Representation) – the input representation
out_repr (Representation) – the output representation
max_power (int) – the largest power of the Laplacian that will be used
discretization (DiscretizationArgs) – the parameters specifying a discretization procedure for PDOs
**kwargs – Group-specific keywords arguments for
_basis_generatormethod
- Returns
 the analytical basis
Reflections and Rotations
- class FlipRot2dOnR2(N=None, maximum_frequency=None, axis=1.5707963267948966, fibergroup=None)[source]
 Bases:
e2cnn.gspaces.r2.general_r2.GeneralOnR2Describes reflectional and rotational symmetries of the plane \(\R^2\).
Reflections are applied with respect to the line through the origin with an angle
axisdegrees with respect to the X-axis.If
N > 1, the class models reflections and discrete rotations by angles multiple of \(\frac{2\pi}{N}\) (DihedralGroup). Otherwise, ifN=-1, the class models reflections and continuous planar rotations (O2). In that case the parametermaximum_frequencyis required to specify the maximum frequency of the irreps ofO2(see its documentation for more details)Note
All axes obtained from the axis defined by
axiswith a rotation in the symmetry group are equivalent. For instance, ifN = 4, an axis \(\beta\) is equivalent to the axis \(\beta + \pi/2\). It follows that forN = -1, i.e. in case the symmetry group contains all continuous rotations, any reflection axis is theoretically equivalent. In practice, though, a basis for equivariant convolutional filter sampled on a grid is affected by the specific choice of the axis. In general, choosing an axis aligned with the grid (an horizontal or a vertical axis, i.e. \(0\) or \(\pi/2\)) is suggested.- Parameters
 N (int) – number of discrete rotations (integer greater than 1) or -1 for continuous rotations
maximum_frequency (int) – maximum frequency of
O2‘s irreps ifN = -1axis (float, optional) – the slope of the axis of the flip (in radians)
fibergroup (Group, optional) – use an already existing instance of the symmetry group. In that case only the parameter
axisshould be used.
- Variables
 ~.axis (float) – Angle with respect to the horizontal axis which defines the reflection axis.
- restrict(id)[source]
 Build the
GSpaceassociated with the subgroup of the current fiber group identified by the inputid, which is a tuple \((k, M)\).Here, \(M\) is a positive integer indicating the number of discrete rotations in the subgroup while \(k\) is either
None(no reflections) or an angle indicating the axis of reflection. If the current fiber group is \(D_N\) (DihedralGroup), then \(M\) needs to divide \(N\) and \(k\) needs to be an integer in \(\{0, \dots, \frac{N}{M}-1\}\). Otherwise, \(M\) can be any positive integer while \(k\) needs to be a real number in \([0, \frac{2\pi}{M}]\).Valid combinations are:
(
None, \(1\)): restrict to no reflection and rotation symmetries(
None, \(M\)): restrict to only the \(M\) rotations generated by \(r_{2\pi/M}\).(\(0\), \(1\)): restrict to only reflections \(\langle f \rangle\) around the same axis as in the current group
(\(0\), \(M\)): restrict to reflections and \(M\) rotations generated by \(r_{2\pi/M}\) and \(f\)
If the current fiber group is \(D_N\) (an instance of
DihedralGroup):(\(k\), \(M\)): restrict to reflections \(\langle r_{k\frac{2\pi}{N}} f \rangle\) around the axis of the current G-space rotated by \(k\frac{\pi}{N}\) and \(M\) rotations generated by \(r_{2\pi/M}\)
If the current fiber group is \(O(2)\) (an instance of
O2):(\(\theta\), \(M\)): restrict to reflections \(\langle r_{\theta} f \rangle\) around the axis of the current G-space rotated by \(\frac{\theta}{2}\) and \(M\) rotations generated by \(r_{2\pi/M}\)
(
None, \(-1\)): restrict to all (continuous) rotations
- Parameters
 id (tuple) – the id of the subgroup
- Returns
 a tuple containing
gspace: the restricted gspace
back_map: a function mapping an element of the subgroup to itself in the fiber group of the original space
subgroup_map: a function mapping an element of the fiber group of the original space to itself in the subgroup (returns
Noneif the element is not in the subgroup)
Rotations
- class Rot2dOnR2(N=None, maximum_frequency=None, fibergroup=None)[source]
 Bases:
e2cnn.gspaces.r2.general_r2.GeneralOnR2Describes rotation symmetries of the plane \(\R^2\).
If
N > 1, the class models discrete rotations by angles which are multiple of \(\frac{2\pi}{N}\) (CyclicGroup). Otherwise, ifN=-1, the class models continuous planar rotations (SO2). In that case the parametermaximum_frequencyis required to specify the maximum frequency of the irreps ofSO2(see its documentation for more details)- Parameters
 N (int) – number of discrete rotations (integer greater than 1) or
-1for continuous rotationsmaximum_frequency (int) – maximum frequency of
SO2’s irreps ifN = -1fibergroup (Group, optional) – use an already existing instance of the symmetry group. In that case, the other parameters should not be provided.
- restrict(id)[source]
 Build the
GSpaceassociated with the subgroup of the current fiber group identified by the inputid.idis a positive integer \(M\) indicating the number of rotations in the subgroup. If the current fiber group is \(C_N\) (CyclicGroup), then \(M\) needs to divide \(N\). Otherwise, \(M\) can be any positive integer.- Parameters
 id (int) – the number \(M\) of rotations in the subgroup
- Returns
 a tuple containing
gspace: the restricted gspace
back_map: a function mapping an element of the subgroup to itself in the fiber group of the original space
subgroup_map: a function mapping an element of the fiber group of the original space to itself in the subgroup (returns
Noneif the element is not in the subgroup)
Reflections
- class Flip2dOnR2(axis=1.5707963267948966, fibergroup=None)[source]
 Bases:
e2cnn.gspaces.r2.general_r2.GeneralOnR2Describes reflectional symmetries of the plane \(\R^2\).
Reflections are applied along the line through the origin with an angle
axisdegrees with respect to the X-axis.- Parameters
 - Variables
 ~.axis (float) – Angle with respect to the horizontal axis which defines the reflection axis.
- restrict(id)[source]
 Build the
GSpaceassociated with the subgroup of the current fiber group identified by the inputid.As the reflection group contains only two elements, it has only one subgroup: the trivial group. The only accepted input values are
id=1which returns an instance ofTrivialOnR2andid=2which returns a new instance of the current group.- Parameters
 id (tuple) – the id of the subgroup
- Returns
 a tuple containing
gspace: the restricted gspace
back_map: a function mapping an element of the subgroup to itself in the fiber group of the original space
subgroup_map: a function mapping an element of the fiber group of the original space to itself in the subgroup (returns
Noneif the element is not in the subgroup)
Trivial Action
- class TrivialOnR2(fibergroup=None)[source]
 Bases:
e2cnn.gspaces.r2.general_r2.GeneralOnR2Describes the plane \(\R^2\) without considering any origin-preserving symmetry. This is modeled by a choosing trivial fiber group \(\{e\}\).
Note
This models the symmetries of conventional Convolutional Neural Networks which are not equivariant to origin preserving transformations such as rotations and reflections.
- Parameters
 fibergroup (Group, optional) – use an already existing instance of the symmetry group. By default, it builds a new instance of the trivial group.
- restrict(id)[source]
 Build the
GSpaceassociated with the subgroup of the current fiber group identified by the inputid.As the trivial group contains only one element, there are no other subgroups. The only accepted input value is
id=1and returns this same group. This functionality is implemented only for consistency with the other G-spaces.- Parameters
 id (int) – the order of the subgroup
- Returns
 a tuple containing
gspace: the restricted gspace
back_map: a function mapping an element of the subgroup to itself in the fiber group of the original space
subgroup_map: a function mapping an element of the fiber group of the original space to itself in the subgroup (returns
Noneif the element is not in the subgroup)