Threshold Logic Circuits
Collection
Boolean gates, voting functions, modular arithmetic, and adders as threshold networks. • 270 items • Updated • 1
Computes Hamming weight mod 7 for 8-bit inputs. Multi-layer network with thermometer encoding.
x₀ x₁ x₂ x₃ x₄ x₅ x₆ x₇
│ │ │ │ │ │ │ │
└──┴──┴──┴──┼──┴──┴──┴──┘
▼
┌─────────────┐
│ Thermometer │ Layer 1: 9 neurons
└─────────────┘
│
▼
┌─────────────┐
│ MOD-7 │ Layer 2: 6 neurons
│ Detection │ Pattern (1,1,1,1,1,1,-6)
└─────────────┘
│
▼
┌─────────────┐
│ Classify │ Output: 7 classes
└─────────────┘
│
▼
{0, 1, 2, 3, 4, 5, 6}
Pattern (1, 1, 1, 1, 1, 1, -6) cycles mod 7:
HW=0: sum=0 → 0 mod 7
...
HW=6: sum=6 → 6 mod 7
HW=7: sum=0 → 0 mod 7 (reset: 1+1+1+1+1+1-6=0)
HW=8: sum=1 → 1 mod 7
For 8-bit inputs, only one reset occurs (at HW=7).
| Layer | Neurons | Function |
|---|---|---|
| Input | 8 | Binary bits |
| Hidden 1 | 9 | Thermometer encoding |
| Hidden 2 | 6 | MOD-7 detection |
| Output | 7 | One-hot classification |
Total: 22 neurons, 190 parameters
from safetensors.torch import load_file
import torch
w = load_file('model.safetensors')
def forward(x):
x = x.float()
x = (x @ w['layer1.weight'].T + w['layer1.bias'] >= 0).float()
x = (x @ w['layer2.weight'].T + w['layer2.bias'] >= 0).float()
out = x @ w['output.weight'].T + w['output.bias']
return out.argmax(dim=-1)
threshold-mod7/
├── model.safetensors
├── model.py
├── config.json
└── README.md
MIT