#!/bin/bash # Action Recognition Round 4: Fix epoch-1 overfit with lower LR + warmup # Test top 3 modality combos from recog3a with LR sweep # Total: 9 jobs PYTHON=python BASEDIR=${PULSE_ROOT} TRAIN_SCRIPT=${BASEDIR}/experiments/tasks/train_pred_cls.py OUTDIR=${BASEDIR}/results/recog4 LOGDIR=${OUTDIR}/slurm_logs mkdir -p $LOGDIR # Best settings from recog3a: ds=2, window=4s, coarse, prev_action BASE="--mode recognition --coarse --use_prev_action --epochs 80 --batch_size 32 --weight_decay 1e-4 --hidden_dim 128 --dropout 0.2 --downsample 2 --patience 20 --seed 42 --augment --noise_std 0.1 --time_mask_ratio 0.1 --label_smoothing 0.1 --window_sec 4.0 --output_dir $OUTDIR" # Top 3 modality combos TOP_MODS=("mocap,emg,eyetrack" "mocap,imu" "mocap,emg,imu") LRS=("3e-4" "1e-4" "5e-5") for mods in "${TOP_MODS[@]}"; do mod_tag=$(echo $mods | tr ',' '-') for lr in "${LRS[@]}"; do lr_tag=$(echo $lr | tr '-' 'n') sbatch \ -J "rec4_${mod_tag}_${lr_tag}" \ -p gpuA800 \ --gres=gpu:1 \ -N 1 -n 1 \ --cpus-per-task=4 \ --mem=32G \ -t 2:00:00 \ -o "${LOGDIR}/${mod_tag}_lr${lr_tag}_%j.out" \ -e "${LOGDIR}/${mod_tag}_lr${lr_tag}_%j.err" \ --export=ALL \ --wrap="export PYTHONUNBUFFERED=1; cd ${BASEDIR}; $PYTHON $TRAIN_SCRIPT --modalities $mods --lr $lr --tag lr${lr_tag} $BASE" echo "Submitted: $mods lr=$lr" done done echo "" echo "Total: 9 jobs | Recognition Round 4 | LR sweep" echo "Results: $OUTDIR"