threshold-mod9 / README.md
phanerozoic's picture
Rename from tiny-mod9-verified
38de0ac verified
metadata
license: mit
tags:
  - pytorch
  - safetensors
  - threshold-logic
  - neuromorphic
  - modular-arithmetic

threshold-mod9

Trivial case: computes Hamming weight mod 9 for 8-bit inputs. Since max HW is 8 < 9, this is just HW.

Circuit

  xβ‚€ x₁ xβ‚‚ x₃ xβ‚„ xβ‚… x₆ x₇
   β”‚  β”‚  β”‚  β”‚  β”‚  β”‚  β”‚  β”‚
   β”‚  β”‚  β”‚  β”‚  β”‚  β”‚  β”‚  β”‚
   w: 1  1  1  1  1  1  1  1
   β””β”€β”€β”΄β”€β”€β”΄β”€β”€β”΄β”€β”€β”Όβ”€β”€β”΄β”€β”€β”΄β”€β”€β”΄β”€β”€β”˜
               β–Ό
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚ b:  0   β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β–Ό
        HW (= HW mod 9)

Why Trivial?

For mod m where m > (number of inputs), no reset ever occurs:

  • 8 inputs β†’ max HW = 8
  • 8 mod 9 = 8 (no wraparound)

The circuit just sums the inputs. It's a degenerate case included for completeness of the MOD-m family.

Parameters

Weights [1, 1, 1, 1, 1, 1, 1, 1]
Bias 0
Total 9 parameters

Usage

from safetensors.torch import load_file
import torch

w = load_file('model.safetensors')

def mod9(bits):  # Actually just HW
    inputs = torch.tensor([float(b) for b in bits])
    return int((inputs * w['weight']).sum() + w['bias'])

Files

threshold-mod9/
β”œβ”€β”€ model.safetensors
β”œβ”€β”€ model.py
β”œβ”€β”€ config.json
└── README.md

License

MIT