blob: 82442e6040f6d2caf2e4453b0d4c7d79479b336f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/usr/bin/env bash
# Frozen five-seed test confirmation of innovation under endogenous apical traffic.
# Usage: c1_innovation_confirm.sh <gpu> "<model seeds>"
set -eu
cd "$(dirname "$0")/.."
GPU="${1:?GPU index required}"
SEEDS="${2:-0 1 2 3 4}"
PYTHON="${PYTHON:-/home/yurenh2/miniconda3/envs/ep_pascal/bin/python3}"
run_one() {
model_seed="$1"
family="$2"
scale="$3"
traffic_seed="$4"
signal="$5"
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
scale_tag="${scale//./p}"
tag="c1_confirm_v1_mnist_${family}_rho${scale_tag}_t${traffic_seed}_${signal}_d3_s${model_seed}"
out="results/${tag}.json"
if [ -s "$out" ]; then
echo "[$tag] exists; skipping"
return
fi
CUDA_VISIBLE_DEVICES="$GPU" "$PYTHON" experiments/run.py \
--mode sdil --dataset mnist --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.05 \
--pert_sigma 0.01 --pert_every 4 --pert_ndirs 1 \
--pert_mode simultaneous \
--traffic_mode "$family" --traffic_seed "$traffic_seed" --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 0 --eval_split test --eval_every 0 \
--diagnostics alignment --diagnostics_schedule final --probe_bs 512 \
--seed "$model_seed" --log_every 100000 --tag "$tag"
}
for seed in $SEEDS; do
# At rho=0, raw, norm-matched raw, and neutral-period innovation should agree.
for signal in raw matched residual; do
run_one "$seed" none 0 1234 "$signal"
done
# Levels and predictor timescale were selected on the training-only
# validation screens. Two independently seeded projections of each traffic
# construction are frozen here; no test result changes this matrix.
for spec in soma:0.5 topdown:0.2; do
IFS=: read -r family scale <<EOF
$spec
EOF
for traffic_seed in 1234 5678; do
for signal in raw matched residual taskfit; do
run_one "$seed" "$family" "$scale" "$traffic_seed" "$signal"
done
done
done
done
|