Neural-Matter Network (NMN) - Advanced neural network layers with attention mechanisms
Project description
โ๏ธ NMN โ Neural Matter Networks
Not the neurons we want, but the neurons we need
Activation-free neural layers that learn non-linearity through geometric operations
๐ฏ TL;DR
NMN replaces traditional Linear + ReLU with a single geometric operation that learns non-linearity without activation functions:
# Traditional approach
y = relu(linear(x)) # dot product โ activation
# NMN approach
y = yat(x) # geometric operation with built-in non-linearity
The Yat-Product (โต) balances similarity and distance to create inherently non-linear transformationsโno activations needed.
โจ Key Features
| Feature | Description |
|---|---|
| ๐ฅ Activation-Free | Learn complex non-linear relationships without ReLU, sigmoid, or tanh |
| ๐ Multi-Framework | PyTorch, TensorFlow, Keras, Flax (Linen & NNX) |
| ๐งฎ Geometric Foundation | Based on distance-similarity tradeoff, not just correlations |
| โ Cross-Framework Consistency | Verified numerical equivalence across all frameworks |
| ๐ง Complete Layer Suite | Dense, Conv1D/2D/3D, ConvTranspose, Attention, RNN cells |
| โก Production Ready | Comprehensive tests, CI/CD, high code coverage |
๐ The Mathematics
Yat-Product (โต)
The core operation that powers NMN:
$$ โต(\mathbf{w}, \mathbf{x}) = \frac{\langle \mathbf{w}, \mathbf{x} \rangle^2}{|\mathbf{w} - \mathbf{x}|^2 + \epsilon} $$
๐ Geometric Interpretation (click to expand)
Rewriting in terms of norms and angles:
$$ โต(\mathbf{w}, \mathbf{x}) = \frac{|\mathbf{w}|^2 |\mathbf{x}|^2 \cos^2\theta}{|\mathbf{w}|^2 - 2\langle\mathbf{w}, \mathbf{x}\rangle + |\mathbf{x}|^2 + \epsilon} $$
Output is maximized when:
- โ Vectors are aligned (small ฮธ โ large cosยฒฮธ)
- โ Vectors are close (small Euclidean distance)
- โ Vectors have large magnitude (amplifies the signal)
This creates a fundamentally different learning dynamic:
| Traditional Neuron | Yat Neuron |
|---|---|
| Measures correlation only | Balances similarity AND proximity |
| Requires activation for non-linearity | Non-linearity is intrinsic |
| Can fire for distant but aligned vectors | Penalizes distance between w and x |
Yat-Convolution (โต*)
The same principle applied to local patches:
$$ โต^*(\mathbf{W}, \mathbf{X}) = \frac{(\sum_{i,j} w_{ij} \cdot x_{ij})^2}{\sum_{i,j}(w_{ij} - x_{ij})^2 + \epsilon} $$
Where W is the kernel and X is the input patch.
๐ Quick Start
Installation
pip install nmn
# Framework-specific installations
pip install "nmn[torch]" # PyTorch
pip install "nmn[keras]" # Keras/TensorFlow
pip install "nmn[nnx]" # Flax NNX (JAX)
pip install "nmn[all]" # Everything
Basic Usage
|
PyTorch import torch
from nmn.torch.nmn import YatNMN
# Replace nn.Linear + activation
layer = YatNMN(
in_features=128,
out_features=64,
epsilon=1e-5
)
x = torch.randn(32, 128)
y = layer(x) # (32, 64) โ non-linear output!
|
Keras import keras
from nmn.keras.nmn import YatNMN
# Drop-in replacement for Dense
layer = YatNMN(
features=64,
epsilon=1e-5
)
x = keras.ops.zeros((32, 128))
y = layer(x) # (32, 64)
|
|
Flax NNX from flax import nnx
from nmn.nnx.nmn import YatNMN
layer = YatNMN(
in_features=128,
out_features=64,
rngs=nnx.Rngs(0)
)
x = jax.numpy.zeros((32, 128))
y = layer(x) # (32, 64)
|
TensorFlow import tensorflow as tf
from nmn.tf.nmn import YatNMN
layer = YatNMN(features=64)
x = tf.zeros((32, 128))
y = layer(x) # (32, 64)
|
๐ฆ Layer Support Matrix
Core Layers
| Layer | PyTorch | TensorFlow | Keras | Flax NNX | Flax Linen |
|---|---|---|---|---|---|
| YatNMN (Dense) | โ | โ | โ | โ | โ |
| YatConv1D | โ | โ | โ | โ | โ |
| YatConv2D | โ | โ | โ | โ | โ |
| YatConv3D | โ | โ | โ | โ | โ |
| YatConvTranspose1D | โ | โ | โ | โ | โ |
| YatConvTranspose2D | โ | โ | โ | โ | โ |
| YatConvTranspose3D | โ | โ | โ | โ | โ |
Advanced Layers (Flax NNX)
| Layer | Status | Description |
|---|---|---|
| MultiHeadAttention | โ | Yat-based attention mechanism |
| YatSimpleCell | โ | Simple RNN cell |
| YatLSTMCell | โ | LSTM with Yat operations |
| YatGRUCell | โ | GRU with Yat operations |
| softermax | โ | Generalized softmax: $\frac{x_k^n}{\epsilon + \sum_i x_i^n}$ |
| softer_sigmoid | โ | Smooth sigmoid variant |
| soft_tanh | โ | Smooth tanh variant |
| DropConnect | โ | Weight-level dropout regularization |
๐ฌ Cross-Framework Consistency
All implementations are verified to produce numerically equivalent outputs given identical inputs and weights:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Cross-Framework Consistency Test โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Framework Pair โ Max Error โ Status โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโค
โ PyTorch โ TensorFlow โ < 1e-6 โ โ
PASS โ
โ PyTorch โ Keras โ < 1e-6 โ โ
PASS โ
โ PyTorch โ Flax NNX โ < 1e-6 โ โ
PASS โ
โ PyTorch โ Flax Linen โ < 1e-6 โ โ
PASS โ
โ TensorFlow โ Keras โ < 1e-7 โ โ
PASS โ
โ Flax NNX โ Flax Linen โ < 1e-7 โ โ
PASS โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโ
This demonstrates the robustness of the geometric YAT formulation across different numerical backends.
๐ Examples
See EXAMPLES.md for comprehensive usage guides including:
- Framework-specific quick starts (PyTorch, Keras, TensorFlow, Flax)
- Architecture examples (CNN, Transformer, RNN)
- Advanced features (DropConnect, custom squashers, attention)
Quick run:
python examples/torch/yat_cifar10.py # PyTorch CIFAR-10
python examples/keras/language_imdb.py # Keras sentiment
python examples/nnx/language/mingpt.py # JAX GPT
๐งช Testing
Comprehensive test suite with cross-framework validation:
# Install test dependencies
pip install "nmn[test]"
# Run all tests
pytest tests/ -v
# Run specific framework
pytest tests/test_torch/ -v
pytest tests/test_keras/ -v
pytest tests/test_nnx/ -v
# Run cross-framework consistency tests
pytest tests/integration/test_cross_framework_consistency.py -v
# With coverage
pytest tests/ --cov=nmn --cov-report=html
Test Structure
tests/
โโโ test_torch/ # PyTorch layer tests + math validation
โโโ test_keras/ # Keras layer tests
โโโ test_tf/ # TensorFlow layer tests
โโโ test_nnx/ # Flax NNX tests (attention, RNN, etc.)
โโโ test_linen/ # Flax Linen tests
โโโ integration/
โโโ test_cross_framework_consistency.py # Numerical equivalence
โโโ test_compatibility.py # API compatibility
๐ Theoretical Foundation
Based on the research papers:
Deep Learning 2.0: Artificial Neurons that Matter โ Reject Correlation, Embrace Orthogonality
Deep Learning 2.1: Mind and Cosmos โ Towards Cosmos-Inspired Interpretable Neural Networks
Why Yat-Product?
Traditional neurons compute: $y = \sigma(\mathbf{w}^\top \mathbf{x} + b)$
This has limitations:
- Correlation-based: Only measures alignment, ignores proximity
- Requires activation: Non-linearity is external
- Spurious activations: Can fire strongly for distant but aligned vectors
The Yat-Product addresses these by combining:
- Squared dot product (similarity) in the numerator
- Squared distance (proximity) in the denominator
- Epsilon for numerical stability
The result is a neuron that responds geometrically โ activated when inputs are both similar AND close to weights.
๐ค Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
# Development setup
git clone https://github.com/mlnomadpy/nmn.git
cd nmn
pip install -e ".[dev,test]"
# Run tests
pytest tests/ -v
# Format code
black src/ tests/
isort src/ tests/
Areas for contribution:
- ๐ Bug fixes (open issues)
- โจ New layer types (normalization, graph, etc.)
- ๐ Documentation and tutorials
- โก Performance optimizations
- ๐จ Example applications
๐ API Reference
Core Parameters
| Parameter | Type | Description |
|---|---|---|
in_features |
int | Input dimension (Dense) or channels (Conv) |
out_features |
int | Output dimension or filters |
kernel_size |
int | tuple | Convolution kernel size |
epsilon |
float | Numerical stability (default: 1e-5) |
use_bias |
bool | Include bias term (default: True) |
use_alpha |
bool | Learnable output scaling (default: True) |
Quick Imports
# PyTorch
from nmn.torch.nmn import YatNMN
from nmn.torch.layers import YatConv2d, YatConvTranspose2d
# Keras / TensorFlow
from nmn.keras.nmn import YatNMN
from nmn.keras.conv import YatConv2D
# Flax NNX (most complete)
from nmn.nnx.nmn import YatNMN
from nmn.nnx.yatconv import YatConv
from nmn.nnx.yatattention import MultiHeadAttention
from nmn.nnx.rnn import YatLSTMCell
๐ Full import reference โ EXAMPLES.md
๐ Citation
If you use NMN in your research, please cite:
@software{nmn2024,
author = {Bouhsine, Taha},
title = {NMN: Neural Matter Networks},
year = {2024},
url = {https://github.com/mlnomadpy/nmn}
}
@article{bouhsine2024dl2,
author = {Taha Bouhsine},
title = {Deep Learning 2.0: Artificial Neurons that Matter},
year = {2024}
}
@article{bouhsine2025dl21,
author = {Taha Bouhsine},
title = {Deep Learning 2.1: Mind and Cosmos},
year = {2025}
}
@article{bouhsine2025nomoredelulu,
author = {Taha Bouhsine},
title = {No More DeLuLu: A Kernel-Based Activation-Free Neural Networks},
year = {2025}
}
๐ฌ Support
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ง Contact: taha@azetta.ai
๐ License
AGPL-3.0 โ Free for personal, academic, and commercial use with attribution.
If you modify and deploy on a network, you must share the source code.
For alternative licensing, contact us.
Built with โค๏ธ by azetta.ai
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 nmn-0.2.6.tar.gz.
File metadata
- Download URL: nmn-0.2.6.tar.gz
- Upload date:
- Size: 8.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1b695f6c0083c4f5e0968033610015c9cf02815d09110a46b936832a4918bb6
|
|
| MD5 |
efd17291b7895844ec6c47405ecd2e81
|
|
| BLAKE2b-256 |
ff5a5e35918ac9b4b8bf5c9de2c9ab7210eabe8ec534c5508c3139645b864882
|
File details
Details for the file nmn-0.2.6-py3-none-any.whl.
File metadata
- Download URL: nmn-0.2.6-py3-none-any.whl
- Upload date:
- Size: 165.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b85bff19df1299bbc23d999dabaf15d9faac64be1f4d2ffba8e7cf934064aac5
|
|
| MD5 |
d8d2949ccac6a5f5c3ac05e77b3d73ab
|
|
| BLAKE2b-256 |
d8b276620643566f61ec4c77b2aabad6cc34a1e41a3b5a8219107f63f6733c97
|