A Legendre Polynomial Layer for PyTorch
Project description
torch-legendre
A PyTorch layer for expanding input features into Legendre polynomial bases.
Useful for building models with polynomial feature expansions while keeping the
workflow compatible with standard PyTorch nn.Module layers.
Features
- Computes Legendre polynomial terms P₀(x), P₁(x), …, Pₙ₋₁(x) for each input feature
- Supports arbitrary input dimensionality
- Optional trainable linear projection after expansion
- Drop-in compatible with
torch.nn.Sequential - Efficient recurrence-based computation (no loops over batches)
Installation
pip install -e .
Usage
You can see a full demonstration of the LegendreLayer in the provided example.ipynb notebook.
1. Basic Legendre Expansion
import torch
from torch_legendre import LegendreLayer
# Example: 2 input features, expand to degree 4 (P₀...P₃)
layer = LegendreLayer(in_features=2, degree=4)
x = torch.tensor([[0.1, -0.3],
[0.5, 0.2]]) # shape (batch=2, in_features=2)
y = layer(x)
print(y.shape) # (2, 2 * 4) = (2, 8)
2. With Trainable Projection
# Expand then project down to 3 outputs
layer = LegendreLayer(in_features=2, degree=4, out_features=3)
x = torch.rand(5, 2)
y = layer(x)
print(y.shape) # (5, 3)
3. Stacking in a Sequential Model
import torch.nn as nn
model = nn.Sequential(
LegendreLayer(in_features=1, degree=5, out_features=10),
LegendreLayer(in_features=10, degree=3, out_features=1)
)
API
LegendreLayer
Expands each input feature into its Legendre polynomial basis and optionally applies a trainable linear projection.
Parameters
-
in_features (int): Number of input features.
-
degree (int): Number of polynomial degrees to compute per input feature.
degree = 1means only the constant termP₀(x) = 1. -
out_features (int, optional): If provided, a final
nn.Linearlayer maps from(in_features * degree)→out_features. IfNone, returns the raw expanded features. -
bias (bool, default=True): Whether to include a bias term in the optional linear mapping.
Shapes
- Input:
(batch_size, in_features) - Output:
- If
out_features is None:(batch_size, in_features * degree) - Else:
(batch_size, out_features)
- If
License
This project is licensed under the MIT License — see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
File details
Details for the file torch_legendre-0.1.1.tar.gz.
File metadata
- Download URL: torch_legendre-0.1.1.tar.gz
- Upload date:
- Size: 157.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f12d4de97d6b267cd5e1e3c8f6faa02e7bf0e174f986ef0978ae96ffe840b74c
|
|
| MD5 |
a82a11a09eec23d9ba15b3cceeb2f768
|
|
| BLAKE2b-256 |
6c8fc38abfb1dc610f6315c8214c2b59099672fac6e28fcfb2cc83ffc3586186
|
File details
Details for the file torch_legendre-0.1.1-py3-none-any.whl.
File metadata
- Download URL: torch_legendre-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcb4a89f62b145a29ff0afab011f9113d770678b118a4cfe750482cad3743130
|
|
| MD5 |
9ff97c73d73d88a687951ca3fd441efe
|
|
| BLAKE2b-256 |
1f73e9811c9fcfe328e6ac48b3a31fb3c749800158233528d39a33b7601a91f6
|