| import argparse |
| from trainer import train_led_graph as led |
|
|
|
|
| def parse_config(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument("--cuda", default=True) |
| parser.add_argument("--learning_rate", type=int, default=0.002) |
| parser.add_argument("--max_epochs", type=int, default=128) |
|
|
| parser.add_argument('--cfg', default='led_augment') |
| parser.add_argument('--gpu', type=int, default=0, help='Specify which GPU to use.') |
| parser.add_argument('--train', type=int, default=1, help='Whether train or evaluate.') |
|
|
| parser.add_argument("--info", type=str, default='graph', help='Name of the experiment. ' |
| 'It will be used in file creation.') |
|
|
| |
| parser.add_argument('--top_n', type=int, default=5, |
| help='Number of sparse neighbors per agent (max 10 for NBA with A=11).') |
| parser.add_argument('--residual_on', type=str, default='eps', choices=['eps', 'y0'], |
| help='Where to apply the graph residual: directly on epsilon, or ' |
| 'on the implied y_0 estimate (then re-projected to epsilon).') |
| parser.add_argument('--use_sigma', action='store_true', |
| help='If set, pass the initializer variance_estimation to the graph ' |
| 'as per-agent uncertainty (modulates node features and edges).') |
| parser.add_argument('--use_v6_graph', action='store_true', |
| help='If set, use MoFlow V6-style RAG-scoring graph (FutureInteractionGraphV6) ' |
| 'instead of the default hand-crafted distance-based graph.') |
| parser.add_argument('--uncertainty_weight', type=float, default=1.0, |
| help='Weight for uncertainty NLL loss. Set to 0 for nosigma ablation.') |
| parser.add_argument('--edge_mode', type=str, default='full', |
| choices=['full', 'dist_only', 'relpos_only', 'heading_only', 'vel_only', 'full_relvel'], |
| help='Edge feature mode for RelTrajEncoder ablation.') |
| parser.add_argument('--resume_epoch', type=int, default=0, |
| help='Resume from this checkpoint epoch (0=start fresh).') |
| parser.add_argument('--neighbor_mode', type=str, default='rag', |
| choices=['rag', 'l2', 'semantic'], |
| help='Neighbor selection: rag (semantic+geo), l2 (closest), or semantic (learned only)') |
| return parser.parse_args() |
|
|
|
|
| def main(config): |
| t = led.Trainer(config) |
| if config.train == 1: |
| t.fit() |
| else: |
| t.test_single_model() |
|
|
|
|
| if __name__ == "__main__": |
| config = parse_config() |
| main(config) |
|
|