File size: 1,617 Bytes
820fab0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
# ============================================================
# 5-Fold Cross-Validation — SwinUNet, top-20 bands, cosine LR
# Each fold: honest held-out val → checkpoint selected on generalisation
# ============================================================
set -e
source /data1/nasiruddink/miniconda3/etc/profile.d/conda.sh
conda activate brats
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data1/nasiruddink/miniconda3/envs/brats/lib:/data1/nasiruddink/miniconda3/envs/brats/lib/python3.10/site-packages/nvidia/cudnn/lib
export TF_CPP_MIN_LOG_LEVEL=2

BANDS="band_25,band_18,band_22,band_23,band_10,band_6,band_24,band_27,band_17,band_11,band_13,band_14,band_4,band_3,band_9,band_26,band_8,band_5,band_15,band_7"
mkdir -p bandselection/logs

train_fold() {
    local gpu=$1 fold=$2
    echo "[GPU $gpu] training fold $fold ..."
    CUDA_VISIBLE_DEVICES=$gpu MODEL_NAME="swin_unet" \
      DATA_DIR="dataset/cv_folds/fold_${fold}" \
      BAND_LIST=$BANDS EPOCHS=250 \
      RUN_NAME="cv_fold${fold}" CKPT_DIR="bandselection/cv_fold${fold}" \
      python3 train.py > bandselection/logs/cv_fold${fold}.log 2>&1
    echo "[GPU $gpu] fold $fold done."
}

# Batch 1: folds 0,1,2 on GPU 0,1,2
train_fold 0 0 &  P0=$!
train_fold 1 1 &  P1=$!
train_fold 2 2 &  P2=$!
echo "Batch 1 running (folds 0,1,2)..."
wait $P0 $P1 $P2
echo "Batch 1 done. 60s cooldown."; sleep 60

# Batch 2: folds 3,4 on GPU 0,1
train_fold 0 3 &  P3=$!
train_fold 1 4 &  P4=$!
echo "Batch 2 running (folds 3,4)..."
wait $P3 $P4

echo ""
echo "ALL 5 FOLDS TRAINED."
echo "Checkpoints: bandselection/cv_fold{0..4}/best_model.weights.h5"