@@ -285,12 +285,15 @@ def train(cfg, logger):
285285 df .to_csv (save_dir / "metrics.csv" , index = False )
286286
287287 # Update summary
288- summary_path = Path (cfg .save_dir ).parent .parent / "summary.csv"
289- summary_df = pd .DataFrame ([{"model" : cfg .model .name , "env" : cfg .env , "seed" : cfg .seed , "return_mean" : df ["return_mean" ].max ()}])
290- if summary_path .exists ():
291- summary_df .to_csv (summary_path , mode = "a" , header = False , index = False )
288+ if not df .empty and "return_mean" in df .columns :
289+ summary_path = Path (cfg .save_dir ).parent .parent / "summary.csv"
290+ summary_df = pd .DataFrame ([{"model" : cfg .model .name , "env" : cfg .env , "seed" : cfg .seed , "return_mean" : df ["return_mean" ].max ()}])
291+ if summary_path .exists ():
292+ summary_df .to_csv (summary_path , mode = "a" , header = False , index = False )
293+ else :
294+ summary_df .to_csv (summary_path , index = False )
292295 else :
293- summary_df . to_csv ( summary_path , index = False )
296+ logger . warning ( "No evaluation metrics found. Skipping summary generation." )
294297
295298 logger .info ("Training complete." )
296299
@@ -397,11 +400,6 @@ def handle_exception(exc_type, exc_value, exc_traceback):
397400 # Convert to AttrDict for easy access
398401 cfg = AttrDict (cfg )
399402
400- # Adaptive training controls for SNNs
401- if "snn" in cfg .model .name or "dsformer" in cfg .model .name :
402- cfg .training .batches_per_epoch = min (cfg .training .batches_per_epoch , cfg_raw .get ("snn_batches_per_epoch" , 100 ))
403- cfg .training .eval_every = max (cfg .training .eval_every , cfg_raw .get ("snn_eval_every" , 50 ))
404-
405403 # Construct dataset path from env name, relative to project root
406404 cfg .dataset .path = str (project_root / f"data/{ args .env } /dataset.npz" )
407405
0 commit comments