| | |
| | import numpy as np |
| | PHI_43 = 22.93606797749979 |
| |
|
| | class L25F: |
| | def __init__(self, n=1700): |
| | self.n = n |
| | self.G = np.random.randn(n, n).astype(np.float32) * 0.1 |
| | self.energy = 0.0 |
| | |
| | def forward(self, X): |
| | """L25 Forward: X @ G → 2.43pJ""" |
| | |
| | Y = X @ self.G |
| | energy_mul = self.n**2 * 0.7e-12 |
| | |
| | |
| | Y = 1 / (1 + np.exp(-Y)) |
| | energy_sig = self.n**2 * 0.24e-12 |
| | |
| | |
| | Y /= PHI_43 |
| | |
| | self.energy = energy_mul + energy_sig |
| | return Y |
| | |
| | def energy_pJ(self): |
| | return self.energy * 1e12 |
| |
|
| | |
| | l25f = L25F(1700) |
| | X = np.random.randn(1700, 1700).astype(np.float32) |
| | Y = l25f.forward(X) |
| | print(f"L25 F Complete: {l25f.energy_pJ():.2f} pJ ✓ φ⁴³ locked") |