vozer2489 commited on
Commit
d7fa836
·
verified ·
1 Parent(s): ac030e2

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +39 -0
app.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ from fastapi import FastAPI
4
+ import numpy as np
5
+
6
+ # Định nghĩa lại mô hình
7
+ class TransformerModel(nn.Module):
8
+ def __init__(self, input_dim, d_model=64, nhead=4, num_layers=2):
9
+ super(TransformerModel, self).__init__()
10
+ self.input_fc = nn.Linear(input_dim, d_model)
11
+ self.transformer = nn.TransformerEncoder(
12
+ nn.TransformerEncoderLayer(d_model, nhead, batch_first=True), num_layers
13
+ )
14
+ self.fc_signal = nn.Linear(d_model, 2)
15
+ self.fc_tp = nn.Linear(d_model, 1)
16
+
17
+ def forward(self, x):
18
+ x = self.input_fc(x)
19
+ x = self.transformer(x)
20
+ signal = torch.softmax(self.fc_signal(x[:, -1, :]), dim=-1)
21
+ tp = self.fc_tp(x[:, -1, :])
22
+ return signal, tp
23
+
24
+ # Khởi tạo mô hình
25
+ input_dim = 7
26
+ model = TransformerModel(input_dim)
27
+ model.load_state_dict(torch.load("tradingbot_model.pth"))
28
+ model.eval()
29
+
30
+ app = FastAPI()
31
+
32
+ @app.post("/predict")
33
+ async def predict(inputs: list):
34
+ inputs = torch.FloatTensor(inputs).unsqueeze(1) # Thêm chiều batch
35
+ with torch.no_grad():
36
+ signal_prob, tp_pred = model(inputs)
37
+ signal = torch.argmax(signal_prob).item()
38
+ tp = tp_pred.item()
39
+ return {"signal": signal, "tp": tp}