| | ---
|
| | license: mit
|
| | tags:
|
| | - pytorch
|
| | - safetensors
|
| | - threshold-logic
|
| | - neuromorphic
|
| | ---
|
| |
|
| | # threshold-2outof8
|
| |
|
| | At-least-two detector for 8 inputs. Fires when 2 or more bits are set.
|
| |
|
| | ## Circuit
|
| |
|
| | ```
|
| | xβ xβ xβ xβ xβ xβ
xβ xβ
|
| | β β β β β β β β
|
| | ββββ΄βββ΄βββ΄βββΌβββ΄βββ΄βββ΄βββ
|
| | βΌ
|
| | βββββββββββ
|
| | β w: all 1β
|
| | β b: -2 β
|
| | βββββββββββ
|
| | β
|
| | βΌ
|
| | HW β₯ 2
|
| | ```
|
| |
|
| | ## Mechanism
|
| |
|
| | - Sum = (number of 1s) - 2
|
| | - Fires when Hamming weight β₯ 2
|
| |
|
| | A single active input isn't enough. Needs corroboration from at least one other.
|
| |
|
| | ## k-out-of-8 Family
|
| |
|
| | | Circuit | Bias | Fires when |
|
| | |---------|------|------------|
|
| | | 1-out-of-8 | -1 | HW β₯ 1 |
|
| | | **2-out-of-8** | **-2** | **HW β₯ 2 (this)** |
|
| | | 3-out-of-8 | -3 | HW β₯ 3 |
|
| | | ... | ... | ... |
|
| |
|
| | All share weights [1,1,1,1,1,1,1,1]. Only the bias differs.
|
| |
|
| | ## Parameters
|
| |
|
| | | | |
|
| | |---|---|
|
| | | Weights | [1, 1, 1, 1, 1, 1, 1, 1] |
|
| | | Bias | -2 |
|
| | | Total | 9 parameters |
|
| |
|
| | ## Usage
|
| |
|
| | ```python
|
| | from safetensors.torch import load_file
|
| | import torch
|
| |
|
| | w = load_file('model.safetensors')
|
| |
|
| | def at_least_2(bits):
|
| | inputs = torch.tensor([float(b) for b in bits])
|
| | return int((inputs * w['weight']).sum() + w['bias'] >= 0)
|
| | ```
|
| |
|
| | ## Files
|
| |
|
| | ```
|
| | threshold-2outof8/
|
| | βββ model.safetensors
|
| | βββ model.py
|
| | βββ config.json
|
| | βββ README.md
|
| | ```
|
| |
|
| | ## License
|
| |
|
| | MIT
|
| |
|