lgatr.primitives.nonlinearities

Gated nonlinearities on multivectors.

Functions

gated_gelu(x, gates)

Pin-equivariant gated GeLU nonlinearity without division.

gated_relu(x, gates)

Pin-equivariant gated ReLU nonlinearity.

gated_sigmoid(x, gates)

Pin-equivariant gated sigmoid nonlinearity.

lgatr.primitives.nonlinearities.gated_gelu(x, gates)[source]

Pin-equivariant gated GeLU nonlinearity without division.

Given multivector input x and scalar input gates (with matching batch dimensions), computes GeLU(gates) * x.

References

Dan Hendrycks, Kevin Gimpel, “Gaussian Error Linear Units (GELUs)”, arXiv:1606.08415

Parameters:
  • x (torch.Tensor) – Multivector input with shape (…, 16)

  • gates (torch.Tensor) – Pin-invariant gates with shape (…, 1).

Returns:

outputs – Computes GeLU(gates) * x, with broadcasting along the last dimension. Result has shape (…, 16)

Return type:

torch.Tensor

lgatr.primitives.nonlinearities.gated_relu(x, gates)[source]

Pin-equivariant gated ReLU nonlinearity.

Given multivector input x and scalar input gates (with matching batch dimensions), computes ReLU(gates) * x.

Parameters:
  • x (torch.Tensor) – Multivector input with shape (…, 16)

  • gates (torch.Tensor) – Pin-invariant gates with shape (…, 1).

Returns:

outputs – Computes ReLU(gates) * x, with broadcasting along the last dimension. Result has shape (…, 16)

Return type:

torch.Tensor

lgatr.primitives.nonlinearities.gated_sigmoid(x, gates)[source]

Pin-equivariant gated sigmoid nonlinearity.

Given multivector input x and scalar input gates (with matching batch dimensions), computes sigmoid(gates) * x.

Parameters:
  • x (torch.Tensor) – Multivector input with shape (…, 16)

  • gates (torch.Tensor) – Pin-invariant gates with shape (…, 1).

Returns:

outputs – Computes Sigmoid(gates) * x, with broadcasting along the last dimension. Result has shape (…, 16)

Return type:

torch.Tensor