ridvangndoan commited on
Commit
d1cd5ef
·
verified ·
1 Parent(s): 55f7589

Add modeling_omegacode.py

Browse files
Files changed (1) hide show
  1. modeling_omegacode.py +53 -0
modeling_omegacode.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import torch
3
+ import torch.nn as nn
4
+ import torch.optim as optim
5
+ from torch.optim.lr_scheduler import CosineAnnealingLR
6
+
7
+ class HolographicMasterCodeTransformer(nn.Module):
8
+ def __init__(self, input_dim=8, d_model=128, nhead=8, num_layers=6, output_dim=1, n_harmonics=4):
9
+ super().__init__()
10
+ self.d_model = d_model
11
+ self.n_harmonics = n_harmonics
12
+ self.alpha_0 = 1.0 / 137.035
13
+
14
+ self.input_proj = nn.Linear(input_dim, d_model)
15
+
16
+ encoder_layer = nn.TransformerEncoderLayer(
17
+ d_model=d_model, nhead=nhead, dim_feedforward=d_model*4,
18
+ dropout=0.1, activation='gelu', batch_first=True, norm_first=True
19
+ )
20
+ self.transformer = nn.TransformerEncoder(encoder_layer, num_layers=num_layers)
21
+
22
+ self.harmonic_weights = nn.Parameter(torch.randn(n_harmonics, d_model))
23
+
24
+ self.output_head = nn.Sequential(
25
+ nn.LayerNorm(d_model),
26
+ nn.Linear(d_model, d_model//2),
27
+ nn.GELU(),
28
+ nn.Dropout(0.1),
29
+ nn.Linear(d_model//2, output_dim)
30
+ )
31
+
32
+ def forward(self, x, alpha=None):
33
+ if alpha is None:
34
+ alpha = self.alpha_0
35
+ h = self.input_proj(x)
36
+ h = h.unsqueeze(1)
37
+ h = self.transformer(h)
38
+ h = h.squeeze(1)
39
+
40
+ psi = torch.zeros_like(h)
41
+ for n in range(self.n_harmonics):
42
+ phase = 2 * torch.pi * (n + 1) * (alpha - self.alpha_0) * 800.0
43
+ psi += self.harmonic_weights[n] * torch.cos(h * (n + 1) + phase)
44
+
45
+ alpha_dev = torch.abs(alpha - self.alpha_0)
46
+ security_factor = torch.exp(-300.0 * alpha_dev)
47
+
48
+ h = h + 0.35 * psi * security_factor
49
+ return self.output_head(h)
50
+
51
+ def holographic_reg(self):
52
+ reg = sum(torch.norm(w, p=1) for w in self.harmonic_weights)
53
+ return 0.0015 * reg / self.n_harmonics