Norm-Based Activation
- class e3nn.nn.NormActivation(irreps_in: Irreps, scalar_nonlinearity: Callable, normalize: bool = True, epsilon: float | None = None, bias: bool = False)[source]
Bases:
ModuleNorm-based activation function Applies a scalar nonlinearity to the norm of each irrep and ouputs a (normalized) version of that irrep multiplied by the scalar output of the scalar nonlinearity. :param irreps_in: representation of the input :type irreps_in:
e3nn.o3.Irreps:param scalar_nonlinearity: scalar nonlinearity such astorch.sigmoid:type scalar_nonlinearity: callable :param normalize: whether to normalize the input features before multiplying them by the scalars from the nonlinearity :type normalize: bool :param epsilon: whennormalize``ing, norms smaller than ``epsilonwill be clamped up toepsilonto avoid division by zero andNaN gradients. Not allowed when
normalizeis False.- Parameters:
bias (bool) – whether to apply a learnable additive bias to the inputs of the
scalar_nonlinearity
Examples
>>> n = NormActivation("2x1e", torch.sigmoid) >>> feats = torch.ones(1, 2*3) >>> print(feats.reshape(1, 2, 3).norm(dim=-1)) tensor([[1.7321, 1.7321]]) >>> print(torch.sigmoid(feats.reshape(1, 2, 3).norm(dim=-1))) tensor([[0.8497, 0.8497]]) >>> print(n(feats).reshape(1, 2, 3).norm(dim=-1)) tensor([[0.8497, 0.8497]])
Methods:
forward(features)evaluate :param features: tensor of shape
(..., irreps_in.dim):type features:torch.Tensor- forward(features)[source]
evaluate :param features: tensor of shape
(..., irreps_in.dim):type features:torch.Tensor- Returns:
tensor of shape
(..., irreps_in.dim)- Return type: