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]
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
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_relativistic-0.1.2.tar.gz.
File metadata
- Download URL: torch_relativistic-0.1.2.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b191b340d01d66b6455e0fed91934f9e8299b20d1da0a5799b505beed46393e9
|
|
| MD5 |
6f37eed020be7cf46e885c6dc6d17977
|
|
| BLAKE2b-256 |
bf82c74d43b09a10ea0918070336c3f7ed3345c560f0c3878753b4827647e6ce
|
Provenance
The following attestation bundles were made for torch_relativistic-0.1.2.tar.gz:
Publisher:
python-publish.yml on bjoernbethge/torch-relativistic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
torch_relativistic-0.1.2.tar.gz -
Subject digest:
b191b340d01d66b6455e0fed91934f9e8299b20d1da0a5799b505beed46393e9 - Sigstore transparency entry: 213366527
- Sigstore integration time:
-
Permalink:
bjoernbethge/torch-relativistic@23d51ff4ced6dbb407d6d8212fba24e282218c29 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/bjoernbethge
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@23d51ff4ced6dbb407d6d8212fba24e282218c29 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file torch_relativistic-0.1.2-py3-none-any.whl.
File metadata
- Download URL: torch_relativistic-0.1.2-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cb3bbd23efb25c519c62275dd49a770b3743c874551100f724b94b7b0516fc5
|
|
| MD5 |
80fdc8983f40380ce0f09cd245577df9
|
|
| BLAKE2b-256 |
a22f7cc713c261e4a3036e36b34c207d876b1a89a95c2a93dd6eef6f35900864
|
Provenance
The following attestation bundles were made for torch_relativistic-0.1.2-py3-none-any.whl:
Publisher:
python-publish.yml on bjoernbethge/torch-relativistic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
torch_relativistic-0.1.2-py3-none-any.whl -
Subject digest:
7cb3bbd23efb25c519c62275dd49a770b3743c874551100f724b94b7b0516fc5 - Sigstore transparency entry: 213366528
- Sigstore integration time:
-
Permalink:
bjoernbethge/torch-relativistic@23d51ff4ced6dbb407d6d8212fba24e282218c29 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/bjoernbethge
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@23d51ff4ced6dbb407d6d8212fba24e282218c29 -
Trigger Event:
workflow_dispatch
-
Statement type: