Symmetry, group representations and E(3)-equivariant networks
Before this lesson: lesson 09 (real spherical harmonics, rotations of the coefficients), linear algebra lesson 04 (orthogonal matrices) and linear algebra lesson 19 (equivariance and the numerical test). Helpful: deep learning lesson 13 (message passing in graph neural networks). Time: about 110 minutes, plus the notebook.
Why this matters #
- Interatomic potentials. ML interatomic potentials such as NequIP, Allegro and MACE predict the energy of a configuration of atoms and get the forces by automatic differentiation. They are used in molecular dynamics of materials, catalysts and liquids. NequIP (Batzner et al., 2022) reports that adding vector () features to a scalars-only () network lowers the force error for every training-set size they tried.
- Data efficiency. The symmetry does not have to be learned, so fewer training examples are needed, and the model is exact for orientations it never saw.
- Geoscience. A three-component seismogram is a vector. The seismic moment tensor of an earthquake and the stress tensor are symmetric matrices: an isotropic part (1 number) plus a deviatoric part (5 numbers). Wind is a vector field on the sphere.
- The same algebra as lesson 09. The reason why an SFNO filter may depend on the degree but not on the order is Schur's lemma, proved here.
1. Predict first #
2. The picture #
Invariance and equivariance #
Let be the positions of atoms. Move all atoms by a rotation and a shift : . The energy must not change: is invariant. The force on atom must turn with the atoms: . The forces are equivariant. The two facts are linked: forces are , and the gradient of an invariant function is equivariant (Theorem 5 below).
Move the rotation angle and the shift. The model computes an energy and a force on each atom. The orange arrows are the model run on the moved molecule, . The dashed blue arrows are the old forces turned by . For the pair potential () they coincide and the energy does not change. Switch to the "dense layer on raw coordinates": it reads absolute positions, so the arrows split and the energy changes.
Rotations of the plane: a first look at irreps #
Start in 2D. Let rotate the plane by the angle . Write a 2D vector as the complex number ; then multiplies by . Call a quantity a quantity of frequency if a rotation multiplies it by :
- : a scalar (temperature, pressure); it does not change.
- : a vector (a horizontal wind).
- : a quantity that returns to itself after a rotation by , for example the traceless part of a symmetric strain matrix, or an axis without a direction.
Rotations never mix different frequencies. Two facts follow, and both carry over to 3D:
- Linear maps. A linear map that commutes with all rotations sends frequency only to frequency , and there multiplies by one fixed number. So no nonzero equivariant linear map turns a vector into a scalar.
- Products. If has frequency and has frequency , then has frequency and has frequency . For two vectors and , has frequency 0 (the dot product and the 2D cross product), and has frequency 2. So the 4 numbers of split as .
Three dimensions: degrees and parity #
Rotations in 3D do not commute, but the same structure holds. The "frequencies" become the degrees of lesson 09. A degree- quantity has components:
- : 1 number (energy, charge, a distance);
- : 3 numbers (a position difference, a force, a velocity);
- : 5 numbers (a symmetric traceless matrix: deviatoric stress, a quadrupole).
A rotation mixes the components of one degree among themselves, and never mixes different degrees. Reflections add one more label, the parity: what happens under the inversion . A vector changes sign (odd). The cross product of two vectors does not, since (even). The cross product is a pseudovector.
Pick an irrep and switch the inversion on and off. The aqua arrows are
the inputs ; the orange object is built from the moved inputs. Under
the inversion, the vector (1o) flips, but the cross product (1e) does not; the
dashed blue arrow shows where an object of the opposite parity would point.
Move the rotation angle: all objects turn with the inputs. For 0e and 0o read the value in the
panel: the triple product changes sign under the inversion.
Nonlinearities need care #
A network needs nonlinearities. On scalars any function is fine, because a rotation does not change a scalar. On vectors, a function applied to each component separately depends on the choice of axes. Two safe choices for a vector : a gate , where is a scalar feature, and a norm nonlinearity . Both multiply by a rotation-invariant number.
Compare the four nonlinearities while you move the angle. The orange arrows are (rotate, then apply), the dashed blue arrows are (apply, then rotate). The gate and the norm nonlinearity give the same arrows (difference about ). Componentwise tanh and ReLU do not. Try with tanh: the difference is zero there, because a rotation only swaps components and changes signs, and tanh is odd. Equivariance must hold for every angle, and breaks it.
The design of an e3nn-type network #
Put together, the rules give the whole design of an equivariant network in the style of the e3nn library:
- Store each atom's features as a list of irreps, for example 16 scalars, 8 vectors and 4
degree-2 features (
16x0e + 8x1o + 4x2e). - Describe each edge (pair of neighbouring atoms) by its length (invariant) and its direction, encoded by the spherical harmonics of the unit edge vector.
- Combine edge directions with neighbour features by Clebsch–Gordan tensor products.
- Mix channels within each degree.
- Apply nonlinearities to scalars only, and scale the higher degrees by scalar gates.
How many components does a feature of degree have, and what is a physical example?
Degree has components. A symmetric matrix (6 numbers) splits into its trace (degree 0, 1 number) and its traceless part (degree 2, 5 numbers); a general matrix also has an antisymmetric part (degree 1, 3 numbers): .
A layer applies separately to the , and components of every vector feature. Is it rotation-equivariant?
The components of a vector depend on the axes, so a function of each component depends on the orientation. Nonlinear maps can be equivariant: a gate or a norm nonlinearity is. Normalising first does not help, because still acts on each component.
3. Definitions and main results #
3.1 Groups, representations and equivariance #
A group is a set of transformations that contains the identity and is closed under composition and inverses. A representation of on a vector space gives each an invertible matrix with . A map is equivariant if
and invariant if (linear algebra lesson 19).
The groups of 3D space:
- : all orthogonal matrices (). : those with , the rotations.
- : all maps with and . : the same with .
- In 3D, , so every with is times a rotation. is the rotations plus the inversion.
Translations are handled by the inputs. A network that sees only relative vectors is invariant to , because these vectors do not change. So the real work is .
3.2 Irreducible representations #
A subspace is invariant if for all . A representation is irreducible (an irrep) if its only invariant subspaces are and .
For a compact group such as there is an inner product in which every is orthogonal (average any inner product over the group). Then the orthogonal complement of an invariant subspace is invariant too. So every finite-dimensional representation is a direct sum of irreps: in a suitable basis all are block diagonal with irrep blocks.
The irreps of (we state this without proof): there is exactly one for each degree
, of dimension . We call its matrices .
The irreps of add a parity : the inversion acts as . The e3nn library writes
them 0e, 1o, 2e, … (e = even, ; o = odd, ).
| Irrep | Components | Examples |
|---|---|---|
0e |
1 | energy, charge, a distance , a dot product |
0o |
1 | pseudoscalar: the triple product , the sign of a chirality |
1o |
3 | vector: position difference, force, velocity, a three-component seismogram |
1e |
3 | pseudovector: , angular momentum, the magnetic field |
2e |
5 | symmetric traceless matrix: deviatoric stress or moment tensor, |
and are two ordinary vectors (1o). Which irrep is their cross product ?
Under a rotation, , so it has degree 1. Under the inversion, does not change sign, so the parity is even: . A true vector (1o) would change sign.
3.3 Real spherical harmonics and the Wigner-D matrix #
Lesson 09 defined the real orthonormal spherical harmonics , . Stack the harmonics of degree into a vector , for a unit vector . Two facts:
- The components of are homogeneous polynomials of degree in with zero Laplacian, restricted to the sphere. They are a basis of all such polynomials (a space of dimension ).
- For they are times the coordinates, in the order for . The e3nn library reorders them to .
Definition. The real Wigner-D matrix is the matrix with
For , . For in the order , , so .
Proof of Theorem 1
- Existence and uniqueness. A component of is a homogeneous polynomial of degree after a linear change of variables, so it is still homogeneous of degree . It still has zero Laplacian, because the Laplacian commutes with rotations. So it lies in the span of the components of , and its coefficients in that basis are unique. They are the rows of .
- Homomorphism. . By the uniqueness of step 1, .
- Orthogonality. Orthonormality says . Substitute ; the area element does not change under rotations, so .
Each space of degree- harmonics is irreducible (we do not prove it), so is the degree- irrep. From the definition you also get a formula to compute it: , an integral that the Gauss grid of lesson 09 computes exactly.
Link to lesson 09. A real field rotated to has the coefficients . This is the rule used there.
Parity. , because the components are homogeneous of degree .
So spherical harmonics have the parities 0e, 1o, 2e, 3o, …
Characters. The character of a representation is . For a rotation by the angle about any axis,
Reason: about the -axis, a rotation turns each pair by the angle (lesson 09), a block with trace , and leaves alone. A rotation by about another axis is , and the trace does not change under this similarity. For , .
Choose the degree , the rotation axis and the angle. The heat map shows (orange positive, blue negative). Check the readouts: to rounding level, and the trace equals the character , which depends only on the angle (change the axis: the matrix changes, the trace does not). For the matrix is with the rows and columns in the order . For the -axis, notice the rotation blocks on the pairs .
3.4 Schur's lemma and equivariant linear layers #
Proof of Theorem 2
- is invariant: if , then . Since is irreducible, or .
- is invariant: . So or .
- If , then and . So and : is invertible. This is (a).
- For (b), has a complex eigenvalue . Then is also equivariant and not invertible, so by (a) it is 0.
For the real irreps of , part (b) also holds with a real , because they stay irreducible over . For 2D rotations it does not: the real block of frequency commutes with every rotation–scaling (the complex numbers of section 2).
Corollary (equivariant linear layers). Let a feature have channels of degree : with , where a rotation acts by (each row is one channel). A linear map is -equivariant exactly when
It mixes channels within each degree, uses the same weights for all components, and never maps one degree to another. A bias is allowed only on scalars. With parity (), channels of different parity do not mix either.
Proof. Split the map into blocks from one copy of degree to one copy of degree . Each block is equivariant, so by Schur's lemma it is 0 if and if . Collect the numbers into . A constant output is equivariant only if for all , which forces for .
The same argument is behind lesson 09: a spectral filter on the sphere is equivariant only if it is on each degree.
How many free weights does an -equivariant linear map from one channel to one channel have?
The input and output irreps differ ( and ), so by Schur's lemma an equivariant linear map between them is 0. To make a degree-2 feature from vectors you need a nonlinear (bilinear) operation, such as the tensor product .
3.5 The Clebsch–Gordan tensor product #
Take of degree and of degree . Their tensor product (the outer product , flattened: numbers) transforms by the Kronecker product . This representation is reducible.
Proof by characters (take )
- The trace of a Kronecker product is the product of the traces. So the character of is (write each as ).
- Count how often each total appears, with and . For the count is .
- In , the term appears once for each in the range with . That is times. So the two characters are equal.
- For a compact group, the character fixes a representation up to a change of basis (the number of copies of inside is , by the orthogonality of characters). Every rotation is a rotation by some angle, so the characters agree on all of .
Clebsch–Gordan coefficients. For each allowed there is an array that extracts the degree- part:
appears once, so Schur's lemma makes unique up to a factor. In practice can be
computed as the null space of the linear equations for a
few random (the notebook does this). For outside the range the null space is : this is
the selection rule. Parities multiply: . So 1o ⊗ 1o → 0e + 1e + 2e, and
1o ⊗ 2e → 1o + 2o + 3o.
The example to remember: two vectors. For (in the basis where ),
Each piece transforms on its own: ; for ; and the symmetric traceless part goes to . So , and the dot and cross products are the Clebsch–Gordan products and .
Top: choose , and the parities. The allowed output degrees light up with their parity, and the dimension count checks the rule. Bottom: drag the tips of (blue) and (aqua). The panel splits into the three pieces. Notice that the squared norms add up, because the pieces are orthogonal, and that the piece vanishes when and are parallel.
The cost of tensor products, and the eSCN trick
A full tensor product of two features that contain all degrees up to has paths , each a dense contraction with terms: work in total (Passaro and Zitnick, 2023). This is why most e3nn-style networks use between 1 and 3.
The eSCN method rotates each edge onto the polar axis before the product. There the spherical harmonics of the edge direction are zero except for (lesson 09: the factor vanishes at the pole). The product becomes sparse, the convolution becomes an one, and the cost drops to . EquiformerV2 uses this.
3.6 An equivariant message-passing layer #
Atoms have positions and features . Each atom receives messages from its neighbours within a cutoff radius . For an edge, let , and . One layer of a Tensor Field Network or NequIP-type model:
- Message. . The weights come from a small MLP applied to a radial basis expansion of , with a smooth cutoff.
- Aggregate. .
- Mix and gate. . mixes channels (the Corollary). Scalars go through a nonlinearity . Each channel of degree is multiplied by , where is an extra scalar channel (the gate).
- Readout. Energy (invariant); forces (equivariant).
Proof.
- : the translation cancels. So and every weight are invariant.
- (the definition of , Theorem 1).
- (Theorem 3). So each term of the message moves by , times an invariant weight.
- A sum of terms that all move by moves by : messages and aggregates are equivariant.
- acts on channels and on components, so they commute (Corollary). A gate multiplies by the invariant number , which commutes with . On scalars , so any works.
- A composition of equivariant maps is equivariant. The energy is a function of scalars only, so it is invariant.
For also track parity: has parity , positions are 1o, and each path must
produce the parity of its output channel. An -equivariant network whose outputs are only
0e scalars gives the same output for a molecule and its mirror image; chiral properties need
pseudoscalars (0o).
Proof. Differentiate with respect to . The chain rule gives . Multiply by (using ): . Change the sign. Translation invariance also gives (differentiate in ).
Cheaper models. EGNN (Satorras et al., 2021) uses only scalars and the vectors : messages , a position update ( a constant), and a scalar update . It is an model without explicit Clebsch–Gordan products. The review of Duval et al. (2024) calls such models (with PaiNN and TorchMD-Net) Cartesian, the irrep models (TFN, NequIP, MACE, Equiformer) spherical, the distance-and-angle models (SchNet, DimeNet) invariant, and models that learn the symmetry by data augmentation unconstrained.
3.7 How to test equivariance #
- Draw random inputs, random (both signs of ) and a random .
- Compute . On an output of type , if , and if (then is a rotation).
- In float64 an exactly equivariant model gives near to (relative); in float32, near . Also check .
- Run the same test on a model that is not equivariant and see it fail. A test that cannot fail proves nothing.
Answers to section 1. (1) No. Equivariance needs for all . For and the rotation by about : , so , but . Use a gate or a norm nonlinearity. (2) Into : the dot product (), the cross product () and the symmetric traceless part (). This is . (3) Zero. By Schur's lemma, a linear equivariant map from degree 1 to degree 0 is 0. To get a scalar from vectors you need a nonlinear operation, such as or a dot product of two vectors.
4. Worked example #
(a) Two vectors, by hand. Take and . Then .
- : , so the piece is .
- : , and the piece is .
- : : symmetric, trace .
- The pieces are orthogonal in the Frobenius inner product, so the squared norms add up: . Check: , , .
Now turn both vectors by about , with : and .
- : unchanged.
- : it turns with the vectors (here the axis of is , so stays).
- The new symmetric traceless part is , which equals .
(b) Characters. For a rotation by : , , , .
- : and . ✓
- : and . ✓
- At : , , , and again . ✓
(c) Weights of an equivariant linear layer. Input and output 16x0e + 8x1o + 4x2e: that is
numbers. A general linear map has weights. The equivariant one
has , plus 16 biases on the scalars.
(d) A seismic moment tensor. The moment tensor of an earthquake is a symmetric
matrix (6 numbers). Under a rotation of the source, , and the inversion leaves it
unchanged (). So is 0e ⊕ 2e: the isotropic part (a volume
change; an explosion is pure ) and the deviatoric part (5 numbers). A vertical
strike-slip double couple has trace 0, so it is pure . An equivariant
network that predicts moment tensors outputs one 0e and one 2e channel.
Which output degrees does the tensor product of a vector () and a degree-2 feature () contain?
The selection rule gives , so . Dimension check: . would need (a dot product needs two features of the same degree).
5. In code #
One message step on atoms with scalar and vector features, tested under random orthogonal
matrices of both determinants and random shifts. The gated layer passes; a layer that adds
(a pseudovector, 1e) to a vector channel (1o) passes for rotations and fails for
reflections; a componentwise fails always.
import numpy as np
from scipy.stats import ortho_group
def layer(X, s, V, mode):
"""One message step: positions X (n,3), scalars s (n,), vectors V (n,3) -> new vectors (n,3)."""
D = X[None, :, :] - X[:, None, :] # D[i, j] = x_j - x_i
r = np.linalg.norm(D, axis=-1)
np.fill_diagonal(r, 1.0)
phi = np.exp(-r**2) * (1 - np.eye(len(X))) # invariant radial weight, no self-loop
rhat = D / r[..., None] # unit edge vectors (1o)
m0 = (phi * (s[None, :] + (rhat * V[None]).sum(-1))).sum(1) # 0e message: s_j + r_hat . v_j
m1 = (phi[..., None] * (s[None, :, None] * rhat + V[None])).sum(1) # 1o message: s_j r_hat + v_j
if mode == "cross": # adds r_hat x v_j, a pseudovector (1e)
m1 = m1 + (phi[..., None] * np.cross(rhat, V[None])).sum(1)
if mode == "tanh": # tanh on each component
return np.tanh(m1)
return m1 / (1 + np.exp(-m0))[:, None] # gate: vector times sigmoid(scalar)
rng = np.random.default_rng(0)
X, s, V = rng.standard_normal((6, 3)), rng.standard_normal(6), rng.standard_normal((6, 3))
for mode in ("gate", "cross", "tanh"):
errs = []
for k in range(4):
Q = ortho_group.rvs(3, random_state=10 + k) # random orthogonal matrix, det +1 or -1
t = rng.standard_normal(3)
out = layer(X, s, V, mode)
out_moved = layer(X @ Q.T + t, s, V @ Q.T, mode) # move the input: x -> Qx + t, v -> Qv
errs.append(f"det {round(np.linalg.det(Q)):+d}: {np.abs(out_moved - out @ Q.T).max():.0e}")
print(f"{mode:5s}", ", ".join(errs))
# gate det +1: 3e-16, det +1: 3e-16, det +1: 3e-16, det -1: 2e-16 O(3)-equivariant
# cross det +1: 4e-16, det +1: 4e-16, det +1: 4e-16, det -1: 1e+00 only SO(3): parity bug
# tanh det +1: 1e-01, det +1: 2e-01, det +1: 2e-01, det -1: 2e-01 not equivariant
The cross layer is a typical bug. A test with only would not find it. The notebook
also computes Wigner-D matrices and Clebsch–Gordan coefficients (as a null space) and builds an
EGNN layer and a force field.
6. Where it shows up #
- ML interatomic potentials. NequIP, Allegro and MACE predict an invariant energy from equivariant features and get the forces by autodiff. MACE builds many-body messages from tensor products of a per-atom "density" of neighbours.
- Catalysis and proteins. eSCN and EquiformerV2 were developed on the Open Catalyst datasets (OC20, OC22). AlphaFold 3 has no built-in equivariance in its diffusion module; it trains with random rotations and translations of the structures (the unconstrained approach).
- Geoscience. Moment tensors and stress (
0e + 2e), three-component seismograms and their polarization (1o), and anisotropy tensors. On the sphere, the degree-wise filters of SFNO (lesson 09) are the Schur's-lemma answer. - When the symmetry is broken on purpose. The atmosphere is not rotation-symmetric: Earth's rotation axis, the Coriolis parameter, orography and the land–sea mask fix directions and places. Weather models give these fields as inputs, which breaks the symmetry where the physics breaks it (lesson 16).
- Practice tools. e3nn (PyTorch):
o3.Irreps,o3.spherical_harmonics,o3.FullyConnectedTensorProduct,nn.Gate, andassert_equivariantfor tests.
7. Common mistakes #
- Componentwise nonlinearities or normalisation on vectors. , ReLU or a per-component scale break equivariance. Use gates or functions of the norm.
- Mixing degrees or parities in a linear layer. Schur's lemma forbids it.
1eand1olook the same under rotations and differ under reflections. - Testing too little. One random rotation, only , or no translation. Test reflections and shifts, and make sure the test can fail.
- Basis conventions. The order of the components ( or ), the normalisation of , and versus differ between libraries. Fix one convention and test it.
- Hard cutoffs. A hard cutoff at makes the energy jump when an atom crosses it, so the forces are wrong there. Use a smooth envelope.
- Assuming a symmetry the data does not have. Gravity, an external field or Earth's rotation break . Give them as inputs: an equivariant model with the gravity vector as an input feature is still exactly equivariant.
- Direct force heads by default. A head that predicts forces directly saves a backward pass, but its forces are not the gradient of an energy, so molecular dynamics with them does not conserve energy. Choose on purpose.
8. Check yourself #
- Which degrees appear in , and does the dimension count work?
Answer
, and . - How many weights does an -equivariant linear map from
8x1oto1x0ehave?Answer
Zero: the only such map is 0 (Schur's lemma; the irreps differ). To get an invariant from vectors you need a nonlinear operation, for example or the tensor product of two vectors (a dot product). - Compute for a rotation by , and check at this angle.
Answer
and . So . - A layer passes the equivariance test for all rotations but fails for . Give a likely
cause and a fix.
Answer
A parity error: an even quantity (for example , `1e`) is added to an odd channel (`1o`), or a pseudoscalar is used as a scalar. Track the parity of every path () and keep `1e` and `1o` in separate channels. - An -equivariant network predicts the moment tensor of an earthquake. Which output irreps
does it need?
Answer
`1x0e + 1x2e` (6 numbers): the isotropic part (the trace) and the deviatoric part. A symmetric matrix has no antisymmetric (`1e`) part, and the moment tensor does not change under the inversion, so both parts are even. - Your float32 model gives a relative equivariance error of . A model trained with random
rotations gives . What do you conclude?
Answer
The first is exactly equivariant: the error is at float32 rounding level. The second is only approximately equivariant: augmentation teaches the symmetry on the training distribution, with no guarantee elsewhere.
What does it mean that a map is equivariant to a group ?
for all and all : transforming the input transforms the output in a known way.
What is the dimension of the irrep of of degree ?
(1 for scalars, 3 for vectors, 5 for symmetric traceless matrices).
What do the labels
1oand1emean, with an example of each?Degree 1 with odd or even parity under the inversion:
1ois a vector (force),1eis a pseudovector (cross product, angular momentum).State Schur's lemma for an equivariant linear map between two irreps.
It is zero or invertible; if the two irreps are the same (over , or real irreps), it is a multiple of the identity.
Which output degrees does the tensor product of degrees and contain?
Each with exactly once; the parity is .
Into which pieces does split for two vectors ?
(), carrying (), and the symmetric traceless part (): .
Why are forces computed as from an invariant energy equivariant?
Differentiating with the chain rule gives .
How do you test a model for E(3) equivariance numerically?
Compare with for random orthogonal of both determinants and random ; the error should be at rounding level, and a non-equivariant model must fail the same test.
Why can you not apply ReLU to each component of a vector feature?
The components depend on the axes, so in general; use a gate or a norm nonlinearity .
9. Interview angle #
- "Why can you not apply a ReLU to a vector feature?" in general. Use gates with an invariant , or norm nonlinearities .
- "What is an irrep, and why does e3nn keep the degrees separate?" The smallest blocks that rotations cannot split further. By Schur's lemma, equivariant linear maps cannot mix them.
- "What is a Clebsch–Gordan tensor product?" The equivariant bilinear product of two irreps, projected onto each degree with . For two vectors: the dot product, the cross product and the symmetric traceless part.
- "Built-in equivariance or data augmentation?" Built-in: exact symmetry, better data efficiency (NequIP's versus comparison), conservative and equivariant forces from an invariant energy, but tensor products cost ( with eSCN). Augmentation: any architecture and good scaling with data (AlphaFold 3), but the symmetry is only approximate.
- "Would you make a global weather model -equivariant?" Only partly. Earth's rotation, orography and land–sea contrasts break the symmetry. Use equivariant building blocks (SFNO filters) plus inputs that carry the broken symmetry.
10. Practice #
The notebook for this lesson runs in Colab and in the browser. It has five exercises, each with a check cell and a folded solution:
- Write the numerical equivariance test and use it to find the parity bug and the tanh bug in three given layers.
- Compute real Wigner-D matrices by quadrature; check orthogonality, the homomorphism property, the character formula and in the order.
- Split into its parts and check how each part transforms under .
- Write an EGNN layer (scalars and relative positions only) and test its E(3) equivariance.
- Write a pair-potential energy and its analytic forces; check them against finite differences and test that the forces are equivariant and sum to zero.
11. Watch and read #
Reading
- Duval et al., A Hitchhiker's Guide to Geometric GNNs for 3D Atomic Systems (2024): the Cartesian, spherical, invariant and unconstrained model families, tensor products and gating. arXiv 2312.07511
- The e3nn user guide: irreducible representations, convolutions and equivariance testing. docs.e3nn.org
- Batzner et al., E(3)-equivariant graph neural networks for data-efficient and accurate interatomic potentials (NequIP, 2022). arXiv 2101.03164
- Bronstein, Bruna, Cohen and Veličković, Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges (2021). arXiv 2104.13478
- Passaro and Zitnick, Reducing SO(3) Convolutions to SO(2) for Efficient Equivariant GNNs (eSCN, 2023). arXiv 2302.03655
Runs in your browser with nothing to install. The notebook repeats the key demos and has exercises with checks; solutions are inside, folded.
No Google account needed: Python runs inside your browser. The first start downloads about 40 MB; your changes are saved in this browser only.