e3nn
E(3) is the Euclidean group in dimension 3. That is the group of rotations, translations and mirror.
e3nn is a pytorch library that aims to create E(3) equivariant neural networks.
Example
from functools import partial
import torch
from e3nn.non_linearities.rescaled_act import swish
from e3nn.radial import GaussianRadialModel
from e3nn.kernel import Kernel
from e3nn.point.operations import Convolution
from e3nn.non_linearities.norm import Norm
from e3nn import rs
# Define the input and output representations
Rs_in = [(1, 0), (2, 1)] # Input = One scalar plus two vectors
Rs_out = [(1, 1)] # Output = One single vector
# Radial model: R+ -> R^d
RadialModel = partial(GaussianRadialModel, max_radius=3.0, number_of_basis=3, h=100, L=1, act=swish)
# kernel: composed on a radial part that contains the learned parameters
# and an angular part given by the spherical hamonics and the Clebsch-Gordan coefficients
K = partial(Kernel, RadialModel=RadialModel, normalization='norm')
# Use the kernel to define a convolution operation
C = partial(Convolution, K)
# Create the convolution module
conv = C(Rs_in, Rs_out)
# Module to compute the norm of each irreducible component
norm = Norm(Rs_out, normalization='norm')
n = 5 # number of input points
features = rs.randn(1, n, Rs_in, normalization='norm', requires_grad=True)
in_geometry = torch.randn(1, n, 3)
out_geometry = torch.zeros(1, 1, 3) # One point at the origin
norm(conv(features, in_geometry, out_geometry)).backward()
print(features)
print(features.grad)
Hierarchy
e3nncontains the librarye3nn/o3.pyO(3) irreducible representationse3nn/rsh.pyreal spherical harmonicse3nn/rs.pygeometrical tensor representationse3nn/imagecontains voxels linear operationse3nn/pointcontains points linear operationse3nn/non_linearitiesnon linearities operations
examplessimple scripts and experiments
Installation
pip install git+https://github.com/e3nn/e3nn
To get the CUDA kernels read the instructions in INSTALL.md.
Citing
@software{e3nn_2020_3723557,
author = {Mario Geiger and
Tess Smidt and
Benjamin K. Miller and
Wouter Boomsma and
Kostiantyn Lapchevskyi and
Maurice Weiler and
Michał Tyszkiewicz and
Jes Frellsen},
title = {github.com/e3nn/e3nn},
month = mar,
year = 2020,
publisher = {Zenodo},
version = {v0.3-alpha},
doi = {10.5281/zenodo.3723557},
url = {https://doi.org/10.5281/zenodo.3723557}
}
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
e3nn-0.0.0.tar.gz
(607.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
e3nn-0.0.0-py3-none-any.whl
(701.7 kB
view details)
File details
Details for the file e3nn-0.0.0.tar.gz.
File metadata
- Download URL: e3nn-0.0.0.tar.gz
- Upload date:
- Size: 607.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f86909a2fdeee807024791258de13e7e8a8411fb0d489cc8f5519b3483aaea17
|
|
| MD5 |
04c6049735a5c35411ca91ae5be30da4
|
|
| BLAKE2b-256 |
0d002fce38a34891b8ce5a95905b8cac955bc168e7d7cf4d57a1456a5b29964b
|
File details
Details for the file e3nn-0.0.0-py3-none-any.whl.
File metadata
- Download URL: e3nn-0.0.0-py3-none-any.whl
- Upload date:
- Size: 701.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a84b301f065ad371d608ce71d7ffde8bfdee7df9d3d3a532fa858f03b8d7e93
|
|
| MD5 |
4a0e05168c8c6572eba2751544e51a46
|
|
| BLAKE2b-256 |
ed3441ec81a75d116c5ccd327a8dade0f3fe114b78c6841001fcf030cd1b901f
|