#!/usr/bin/env bash # Development-only validation sweep for endogenous non-teaching apical traffic. # No test-set metric is emitted. Freeze a protocol before creating test results. # # Usage: # traffic_validation_sweep.sh [dataset] [families] [scales] [signals] [seeds] # Example: # traffic_validation_sweep.sh 5 mnist "soma topdown" "0 0.2 0.5" \ # "raw matched residual taskfit" "0 1" set -eu cd "$(dirname "$0")/.." GPU="${1:?GPU index required}" DATASET="${2:-mnist}" FAMILIES="${3:-soma topdown}" SCALES="${4:-0 0.2 0.5}" SIGNALS="${5:-raw matched residual taskfit}" SEEDS="${6:-0}" PYTHON="${PYTHON:-/home/yurenh2/miniconda3/envs/ep_pascal/bin/python3}" for seed in $SEEDS; do for family in $FAMILIES; do for scale in $SCALES; do # The zero-traffic condition is family-independent. if [ "$scale" = "0" ] && [ "$family" != "soma" ]; then continue fi scale_tag="${scale//./p}" for signal in $SIGNALS; do use_residual=1 raw_control=none p_neutral=1 case "$signal" in raw) use_residual=0 ;; matched) use_residual=0 raw_control=match_innovation_norm ;; residual) ;; taskfit) p_neutral=0 ;; *) echo "unknown signal control: $signal" >&2 exit 2 ;; esac tag="traffic_dev_v1_${DATASET}_${family}_rho${scale_tag}_${signal}_d3_s${seed}" out="results/${tag}.json" if [ -s "$out" ]; then echo "[$tag] exists; skipping" continue fi CUDA_VISIBLE_DEVICES="$GPU" "$PYTHON" experiments/run.py \ --mode sdil --dataset "$DATASET" --device cuda \ --depth 3 --width 256 --residual 1 --act tanh \ --epochs 15 --batch_size 128 --eta 0.05 --momentum 0.9 \ --eta_A 0.02 --eta_P 0.002 \ --pert_sigma 0.01 --pert_every 4 --pert_ndirs 16 \ --pert_mode simultaneous \ --traffic_mode "$family" --nuis_rho "$scale" \ --use_residual "$use_residual" --raw_scale_control "$raw_control" \ --learn_A 1 --learn_P 1 --p_neutral "$p_neutral" \ --p_warmup_steps 200 --p_warmup_eta 0.05 \ --val_examples 5000 --split_seed 2027 --eval_split validation \ --diagnostics alignment --seed "$seed" --log_every 100 --tag "$tag" done done done done