Skip to main content

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 = 1 means only the constant term P₀(x) = 1.

  • out_features (int, optional): If provided, a final nn.Linear layer maps from (in_features * degree)out_features. If None, 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)

License

This project is licensed under the MIT License — see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torch_legendre-0.1.1.tar.gz (157.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torch_legendre-0.1.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

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

Hashes for torch_legendre-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f12d4de97d6b267cd5e1e3c8f6faa02e7bf0e174f986ef0978ae96ffe840b74c
MD5 a82a11a09eec23d9ba15b3cceeb2f768
BLAKE2b-256 6c8fc38abfb1dc610f6315c8214c2b59099672fac6e28fcfb2cc83ffc3586186

See more details on using hashes here.

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

Hashes for torch_legendre-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dcb4a89f62b145a29ff0afab011f9113d770678b118a4cfe750482cad3743130
MD5 9ff97c73d73d88a687951ca3fd441efe
BLAKE2b-256 1f73e9811c9fcfe328e6ac48b3a31fb3c749800158233528d39a33b7601a91f6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page