PULSE-code / experiments /slurm /run_exp1_v9.sh
velvet-pine-22's picture
Upload folder using huggingface_hub
b4b2877 verified
#!/bin/bash
# Scene Recognition (Exp1 v9) - Improvements over v8
# Changes: (A) augmentation, (B) feat_concat fusion, (C) pretrained branches
# All use transformer, imu+mocap+emg, no projection, 5 seeds
PYTHON=python
BASEDIR=${PULSE_ROOT}
SCRIPT=${BASEDIR}/experiments/train_exp1.py
OUTDIR=${BASEDIR}/results/exp1_v9
LOGDIR=${OUTDIR}/slurm_logs
mkdir -p $LOGDIR
BASE="--model transformer --modalities imu,mocap,emg --epochs 100 --batch_size 16 --lr 1e-3 --weight_decay 1e-4 --hidden_dim 128 --downsample 5 --patience 15 --proj_dim 0 --output_dir $OUTDIR"
SEEDS=(42 123 456 789 2024)
# Pretrained single-modality models (modality order: imu=0, mocap=1, emg=2)
PT_IMU=${PULSE_ROOT}/results/exp1_v7/transformer_imu_early/model_best.pt
PT_MOCAP=${PULSE_ROOT}/results/exp1_v8/transformer_mocap_early/model_best.pt
PT_EMG=${PULSE_ROOT}/results/exp1_v7/transformer_emg_early/model_best.pt
# Group A: late fusion + augmentation (5 seeds)
echo "=== A: late + augment (5 seeds) ==="
for seed in "${SEEDS[@]}"; do
sbatch -J "v9_late_aug_s${seed}" -p gpuA800 --gres=gpu:1 -N1 -n1 \
--cpus-per-task=4 --mem=64G -t 2:00:00 \
-o "${LOGDIR}/late_aug_s${seed}_%j.out" \
-e "${LOGDIR}/late_aug_s${seed}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${BASEDIR}; $PYTHON $SCRIPT --fusion late --augment --seed $seed --tag aug_s${seed} $BASE"
echo " late+aug seed=$seed"
done
# Group B: feat_concat fusion (5 seeds)
echo ""
echo "=== B: feat_concat (5 seeds) ==="
for seed in "${SEEDS[@]}"; do
sbatch -J "v9_fc_s${seed}" -p gpuA800 --gres=gpu:1 -N1 -n1 \
--cpus-per-task=4 --mem=64G -t 2:00:00 \
-o "${LOGDIR}/feat_concat_s${seed}_%j.out" \
-e "${LOGDIR}/feat_concat_s${seed}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${BASEDIR}; $PYTHON $SCRIPT --fusion feat_concat --seed $seed --tag s${seed} $BASE"
echo " feat_concat seed=$seed"
done
# Group C: feat_concat + augmentation (5 seeds)
echo ""
echo "=== C: feat_concat + augment (5 seeds) ==="
for seed in "${SEEDS[@]}"; do
sbatch -J "v9_fc_aug_s${seed}" -p gpuA800 --gres=gpu:1 -N1 -n1 \
--cpus-per-task=4 --mem=64G -t 2:00:00 \
-o "${LOGDIR}/feat_concat_aug_s${seed}_%j.out" \
-e "${LOGDIR}/feat_concat_aug_s${seed}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${BASEDIR}; $PYTHON $SCRIPT --fusion feat_concat --augment --seed $seed --tag aug_s${seed} $BASE"
echo " feat_concat+aug seed=$seed"
done
# Group D: late + pretrained IMU branch (freeze_idx=0) (5 seeds)
echo ""
echo "=== D: late + pretrained IMU (5 seeds) ==="
for seed in "${SEEDS[@]}"; do
sbatch -J "v9_late_pt_s${seed}" -p gpuA800 --gres=gpu:1 -N1 -n1 \
--cpus-per-task=4 --mem=64G -t 2:00:00 \
-o "${LOGDIR}/late_pretrained_s${seed}_%j.out" \
-e "${LOGDIR}/late_pretrained_s${seed}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${BASEDIR}; $PYTHON $SCRIPT --fusion late --pretrained_backbone $PT_IMU --freeze_backbone_idx 0 --seed $seed --tag pt_s${seed} $BASE"
echo " late+pretrained seed=$seed"
done
# Group E: late + augment + pretrained IMU (5 seeds)
echo ""
echo "=== E: late + augment + pretrained IMU (5 seeds) ==="
for seed in "${SEEDS[@]}"; do
sbatch -J "v9_late_aug_pt_s${seed}" -p gpuA800 --gres=gpu:1 -N1 -n1 \
--cpus-per-task=4 --mem=64G -t 2:00:00 \
-o "${LOGDIR}/late_aug_pt_s${seed}_%j.out" \
-e "${LOGDIR}/late_aug_pt_s${seed}_%j.err" \
--export=ALL \
--wrap="export PYTHONUNBUFFERED=1; cd ${BASEDIR}; $PYTHON $SCRIPT --fusion late --augment --pretrained_backbone $PT_IMU --freeze_backbone_idx 0 --seed $seed --tag aug_pt_s${seed} $BASE"
echo " late+aug+pretrained seed=$seed"
done
echo ""
echo "Total: 25 jobs | 5 groups × 5 seeds"
echo "Results: $OUTDIR"