Skip to main content

A PyTorch extension that implements neural network components inspired by relativistic physics, particularly the Terrell-Penrose effect.

Project description

torch-relativistic

A PyTorch extension that implements neural network components inspired by relativistic physics, particularly the Terrell-Penrose effect.

Overview

RelativisticTorch provides neural network modules that incorporate concepts from special relativity into machine learning. The key insight is that the Terrell-Penrose effect, where rapidly moving objects appear rotated rather than contracted, can inspire novel information processing paradigms in neural networks.

This library includes:

  • Relativistic Graph Neural Networks (GNNs)
  • Relativistic Spiking Neural Networks (SNNs)
  • Relativistic attention mechanisms
  • Transformations inspired by special relativity

Installation

pip install -e .

Components

Relativistic Graph Neural Networks

GNN modules that process information as if affected by relativistic phenomena:

import torch
from relativistic_torch.gnn import RelativisticGraphConv, MultiObserverGNN

# Create a simple graph
num_nodes = 10
feature_dim = 16
edge_index = torch.tensor([[0, 1, 1, 2, 2, 3, 3, 4, 4, 0],
                           [1, 0, 2, 1, 3, 2, 4, 3, 0, 4]], dtype=torch.long)
node_features = torch.randn(num_nodes, feature_dim)

# Create a relativistic GNN layer
conv = RelativisticGraphConv(
    in_channels=feature_dim,
    out_channels=32,
    max_relative_velocity=0.8
)

# Process the graph
output_features = conv(node_features, edge_index)
print(f\"Output shape: {output_features.shape}\")  # [10, 32]

# Multi-observer GNN processes the graph from multiple relativistic perspectives
multi_observer_gnn = MultiObserverGNN(
    feature_dim=feature_dim,
    hidden_dim=32,
    output_dim=8,
    num_observers=4
)

output = multi_observer_gnn(node_features, edge_index)
print(f\"Multi-observer output shape: {output.shape}\")  # [10, 8]

Relativistic Spiking Neural Networks

SNN components that incorporate relativistic time dilation:

import torch
from relativistic_torch.snn import RelativisticLIFNeuron, TerrellPenroseSNN

# Create input spikes (batch_size=32, input_size=10)
input_spikes = torch.bernoulli(torch.ones(32, 10) * 0.3)

# Create a relativistic LIF neuron
neuron = RelativisticLIFNeuron(
    input_size=10,
    threshold=1.0,
    beta=0.9
)

# Initialize neuron state
initial_state = neuron.init_state(batch_size=32)

# Process input spikes
output_spikes, new_state = neuron(input_spikes, initial_state)
print(f\"Output spikes shape: {output_spikes.shape}\")  # [32]

# Create a complete SNN
snn = TerrellPenroseSNN(
    input_size=10,
    hidden_size=20,
    output_size=5,
    simulation_steps=100
)

# Process input
output = snn(input_spikes)
print(f\"SNN output shape: {output.shape}\")  # [32, 5]

# Get spike history for visualization
spike_history = snn.get_spike_history(input_spikes)
print(f\"Hidden spike history shape: {spike_history['hidden_spikes'].shape}\")  # [32, 100, 20]

Relativistic Attention Mechanism

Attention where different heads operate in different reference frames:

import torch
from relativistic_torch.attention import RelativisticSelfAttention

# Create input sequence (batch_size=16, seq_len=24, feature_dim=64)
seq = torch.randn(16, 24, 64)

# Create relativistic self-attention module
attention = RelativisticSelfAttention(
    hidden_dim=64,
    num_heads=8,
    dropout=0.1,
    max_velocity=0.9
)

# Optional: Create positions for spacetime distances
positions = torch.randn(16, 24, 3)  # 3D positions for each token

# Process sequence
output = attention(seq, positions=positions)
print(f\"Output shape: {output.shape}\")  # [16, 24, 64]

Relativistic Transformations

Apply transformations inspired by special relativity to feature vectors:

import torch
from relativistic_torch.transforms import TerrellPenroseTransform, LorentzBoost

# Create feature vectors (batch_size=8, feature_dim=64)
features = torch.randn(8, 64)

# Apply Terrell-Penrose inspired transformation
transform = TerrellPenroseTransform(
    feature_dim=64,
    max_velocity=0.9,
    mode=\"rotation\"
)

transformed = transform(features)
print(f\"Transformed shape: {transformed.shape}\")  # [8, 64]

# For spacetime features (batch_size=8, feature_dim=8 including 4D spacetime)
spacetime_features = torch.randn(8, 8)

# Apply Lorentz boost
boost = LorentzBoost(
    feature_dim=8,
    time_dim=0,  # First dimension is time
    max_velocity=0.8
)

boosted = boost(spacetime_features)
print(f\"Boosted shape: {boosted.shape}\")  # [8, 8]

Examples

Classification with Relativistic GNN

import torch
import torch.nn as nn
import torch.nn.functional as F
from relativistic_torch.gnn import RelativisticGraphConv

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_relativistic-0.1.1.tar.gz (82.6 kB view details)

Uploaded Source

Built Distribution

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

torch_relativistic-0.1.1-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file torch_relativistic-0.1.1.tar.gz.

File metadata

  • Download URL: torch_relativistic-0.1.1.tar.gz
  • Upload date:
  • Size: 82.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for torch_relativistic-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b0bc4933fefbe9cd8e57fae9d5babaeaddc57079e46f130e2b46386555d36709
MD5 208f155ebfc5ab89b161591c33e431ff
BLAKE2b-256 d67ec5db1ecfbfcf90e47b91cc0020d1dec524c19587ff4b2a3b5794e1d0c051

See more details on using hashes here.

Provenance

The following attestation bundles were made for torch_relativistic-0.1.1.tar.gz:

Publisher: python-publish.yml on bjoernbethge/torch-relativistic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torch_relativistic-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for torch_relativistic-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1c9e94a0abda60573687a512a930d6747efed68d981002cf55abbc842f18e3cc
MD5 437e5835f2bea50cca3d142b9a2ba709
BLAKE2b-256 29c7be7a31071ad16b4de20b968b3b5db54a3b58908f167bc925c6f8ed259b87

See more details on using hashes here.

Provenance

The following attestation bundles were made for torch_relativistic-0.1.1-py3-none-any.whl:

Publisher: python-publish.yml on bjoernbethge/torch-relativistic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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