noranisa's picture
Update services/gnn.py
5266d4e verified
# =========================
# 🔥 SAFE GNN (NO CRASH)
# =========================
def run_gnn(nodes, edges):
try:
import torch
from torch_geometric.nn import GCNConv
from torch_geometric.data import Data
if len(nodes) == 0 or len(edges) == 0:
return []
edge_index = []
for e in edges:
edge_index.append([e["source"], e["target"]])
edge_index = torch.tensor(edge_index).t().contiguous()
x = torch.rand((len(nodes), 16))
class GNN(torch.nn.Module):
def __init__(self):
super().__init__()
self.conv1 = GCNConv(16, 16)
self.conv2 = GCNConv(16, 2)
def forward(self, x, edge_index):
x = self.conv1(x, edge_index)
x = torch.relu(x)
x = self.conv2(x, edge_index)
return x
model = GNN()
out = model(x, edge_index)
return [
{"node": i, "score": float(out[i][0])}
for i in range(len(nodes))
]
except Exception as e:
print("⚠️ GNN fallback aktif:", e)
# 🔥 fallback TANPA torch
return [
{"node": i, "score": 0.5}
for i in range(len(nodes))
]