| | --- |
| | license: mit |
| | tags: |
| | - pytorch |
| | - safetensors |
| | - threshold-logic |
| | - neuromorphic |
| | --- |
| | |
| | # threshold-signbit4 |
| |
|
| | Extract sign bit (MSB) of 4-bit number. |
| |
|
| | ## Function |
| |
|
| | signbit4(a3, a2, a1, a0) = a3 |
| |
|
| | In 2's complement representation: |
| | - Output 0: non-negative (0 to 7) |
| | - Output 1: negative (-8 to -1) |
| |
|
| | ## Truth Table |
| |
|
| | | a3 | a2 | a1 | a0 | unsigned | signed | signbit | |
| | |----|----|----|----|---------:|-------:|:-------:| |
| | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| | | 0 | 1 | 1 | 1 | 7 | +7 | 0 | |
| | | 1 | 0 | 0 | 0 | 8 | -8 | 1 | |
| | | 1 | 1 | 1 | 1 | 15 | -1 | 1 | |
| |
|
| | ## Architecture |
| |
|
| | Single neuron extracting MSB: |
| |
|
| | - Weights: [1, 0, 0, 0] |
| | - Bias: -1 |
| |
|
| | Fires when: a3 - 1 >= 0, i.e., a3 >= 1 |
| |
|
| | ## Parameters |
| |
|
| | | | | |
| | |---|---| |
| | | Inputs | 4 | |
| | | Outputs | 1 | |
| | | Neurons | 1 | |
| | | Layers | 1 | |
| | | Parameters | 5 | |
| | | Magnitude | 2 | |
| |
|
| | ## Usage |
| |
|
| | ```python |
| | from safetensors.torch import load_file |
| | import torch |
| | |
| | w = load_file('model.safetensors') |
| | |
| | def signbit4(a3, a2, a1, a0): |
| | inp = torch.tensor([float(a3), float(a2), float(a1), float(a0)]) |
| | return int((inp @ w['neuron.weight'].T + w['neuron.bias'] >= 0).item()) |
| | |
| | print(signbit4(0, 1, 1, 1)) # 0 (value = +7) |
| | print(signbit4(1, 0, 0, 0)) # 1 (value = -8) |
| | ``` |
| |
|
| | ## License |
| |
|
| | MIT |
| |
|