CharlesCNorton
Exactly 4 of 5 threshold circuit, magnitude 22
035d82d
---
license: mit
tags:
- pytorch
- safetensors
- threshold-logic
- neuromorphic
---
# threshold-exactly4outof5
Exactly 4 of 5 inputs high.
## Function
exactly4outof5(a, b, c, d, e) = 1 if (a + b + c + d + e) == 4, else 0
## Truth Table (selected)
| sum | out |
|-----|-----|
| 0 | 0 |
| 1 | 0 |
| 2 | 0 |
| 3 | 0 |
| 4 | 1 |
| 5 | 0 |
## Architecture
Two layers required (exactly-k is not linearly separable).
**Layer 1:**
- N1: sum >= 4 (weights [1,1,1,1,1], bias -4)
- N2: sum <= 4 (weights [-1,-1,-1,-1,-1], bias 4)
**Layer 2:**
- AND(N1, N2): weights [1,1], bias -2
## Parameters
| | |
|---|---|
| Inputs | 5 |
| Outputs | 1 |
| Neurons | 3 |
| Layers | 2 |
| Parameters | 15 |
| Magnitude | 22 |
## Usage
```python
from safetensors.torch import load_file
import torch
w = load_file('model.safetensors')
def exactly4of5(a, b, c, d, e):
inp = torch.tensor([float(a), float(b), float(c), float(d), float(e)])
l1 = (inp @ w['layer1.weight'].T + w['layer1.bias'] >= 0).float()
out = (l1 @ w['layer2.weight'].T + w['layer2.bias'] >= 0).float()
return int(out.item())
print(exactly4of5(1, 1, 1, 1, 0)) # 1 (sum=4)
print(exactly4of5(1, 1, 1, 1, 1)) # 0 (sum=5)
```
## License
MIT