| import torch | |
| from safetensors.torch import load_file | |
| def load_model(path='model.safetensors'): | |
| return load_file(path) | |
| def carry_propagate(a, b, w): | |
| """Carry propagate signal: P = a XOR b.""" | |
| inp = torch.tensor([float(a), float(b)]) | |
| or_out = int((inp @ w['or.weight'].T + w['or.bias'] >= 0).item()) | |
| nand_out = int((inp @ w['nand.weight'].T + w['nand.bias'] >= 0).item()) | |
| l1 = torch.tensor([float(or_out), float(nand_out)]) | |
| return int((l1 @ w['and.weight'].T + w['and.bias'] >= 0).item()) | |
| if __name__ == '__main__': | |
| w = load_model() | |
| print('Carry Propagate (P = a XOR b):') | |
| print('a b | P') | |
| print('----+--') | |
| for a in [0, 1]: | |
| for b in [0, 1]: | |
| p = carry_propagate(a, b, w) | |
| print(f'{a} {b} | {p}') | |