unknownfriend00007 commited on
Commit
85a1a1d
·
verified ·
1 Parent(s): 60d27dc

Create model.py

Browse files
Files changed (1) hide show
  1. model.py +35 -0
model.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+
5
+ class TinyTransformerForecaster(nn.Module):
6
+ """
7
+ Small Transformer encoder for time-series (CPU-friendly).
8
+ Input: (B, T, F=4)
9
+ Output: (B, 1) predicted log-return
10
+ """
11
+ def __init__(self, feature_dim=4, d_model=64, nhead=4, num_layers=2, dropout=0.1):
12
+ super().__init__()
13
+ self.in_proj = nn.Linear(feature_dim, d_model)
14
+ encoder_layer = nn.TransformerEncoderLayer(
15
+ d_model=d_model,
16
+ nhead=nhead,
17
+ dim_feedforward=4 * d_model,
18
+ dropout=dropout,
19
+ batch_first=True,
20
+ activation="gelu",
21
+ norm_first=True,
22
+ )
23
+ self.encoder = nn.TransformerEncoder(encoder_layer, num_layers=num_layers)
24
+ self.head = nn.Sequential(
25
+ nn.LayerNorm(d_model),
26
+ nn.Linear(d_model, d_model // 2),
27
+ nn.GELU(),
28
+ nn.Linear(d_model // 2, 1),
29
+ )
30
+
31
+ def forward(self, x):
32
+ h = self.in_proj(x)
33
+ h = self.encoder(h)
34
+ last = h[:, -1, :]
35
+ return self.head(last)