{ "model_name": "TwinnableTFT", "version": "1.0.0", "trained_at": "2026-03-25T08:04:47.540328", "input_shape": [ 30, 14 ], "kept_sensors": [ "s2", "s3", "s4", "s7", "s8", "s9", "s11", "s12", "s13", "s14", "s15", "s17", "s20", "s21" ], "dropped_sensors": [ "s1", "s5", "s6", "s10", "s16", "s18", "s19" ], "window_size": 30, "rul_cap": 125, "anomaly_threshold_cycles": 30, "train_datasets": [ "FD001", "FD002", "FD003", "FD004" ], "val_datasets": [ "FD001_test", "FD002_test", "FD003_test", "FD004_test" ], "val_rmse": 37.6905, "val_mae": 27.0402, "val_r2": 0.1788, "scaler_path": "sensor_scaler.pkl", "condition_scaler_path": "condition_scalers.pkl", "pt_checkpoint_path": "tft_best_v6.pt", "training_approach": "condition_aware_per_cluster_normalisation", "n_conditions": 6, "onnx_path": "tft_weights.onnx" }