{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hypertower Repro Pipeline\n", "\n", "This notebook documents the full run sequence used to reproduce current results." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 0) Environment + Paths\n", "\n", "- Activate `fundus_imaging` environment\n", "- Run from repo root\n", "- Confirm data paths:\n", " - `Papila/FundusImages`\n", " - `Papila/ClinicalData`\n", " - `Papila/ExpertsSegmentations`" ] }, { "cell_type": "code", "execution_count": 3, "id": "mzehoci23f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Working directory: /home/rpotter/hypertower\n" ] } ], "source": [ "import os\n", "from pathlib import Path\n", "\n", "# Walk up from cwd until we find the repo root (identified by presence of classes/v2/)\n", "def find_repo_root(marker=\"classes/v2\"):\n", " p = Path.cwd()\n", " for candidate in [p, *p.parents]:\n", " if (candidate / marker).exists():\n", " return candidate\n", " raise RuntimeError(f\"Could not find repo root (looked for '{marker}' starting from {p})\")\n", "\n", "os.chdir(find_repo_root())\n", "print(\"Working directory:\", Path.cwd())" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Papila/FundusImages: OK\n", "Papila/ClinicalData: OK\n", "Papila/ExpertsSegmentations: OK\n", "REFUGE: OK\n" ] } ], "source": [ "from pathlib import Path\n", "\n", "required = [\n", " Path(\"Papila/FundusImages\"),\n", " Path(\"Papila/ClinicalData\"),\n", " Path(\"Papila/ExpertsSegmentations\"),\n", " Path(\"REFUGE\"),\n", "]\n", "for p in required:\n", " print(f\"{p}:\", \"OK\" if p.exists() else \"MISSING\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1) Build UNet Manifest" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Manifest saved to manifest.csv with 2088 entries\n" ] } ], "source": [ "!python3 scripts/main/refuge/build_manifest.py --output manifest.csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2) Train UNet Segmenter (per-image normalization)\n", "\n", "Current tuned baseline:\n", "- `--device cuda`\n", "- `--batch-size 8`\n", "- `--loader-workers 14`\n", "- `--in-memory-cache`\n", "- `--cache-workers 4`" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[UNet] device=cuda (cuda_available=True, workers=14)\n", "[UNet] gpu=AMD Radeon RX 7800 XT\n", "[UNet] in_memory_cache=enabled (note: memory use scales with loader workers)\n", "[UNetSegmenter] prebuilding in-memory cache for 1600 samples (cache_workers=4)\n", "Warm cache: 2%|▌ | 39/1600 [00:01<00:51, 30.28sample/s]\n", "^C\n", "Traceback (most recent call last):\n", " File \"/home/rpotter/hypertower/classes/unet_segmenter.py\", line 219, in prebuild_in_memory_cache\n", " for fut in tqdm(as_completed(futures), total=len(futures), desc=\"Warm cache\", unit=\"sample\"):\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/site-packages/tqdm/std.py\", line 1181, in __iter__\n", " for obj in iterable:\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/concurrent/futures/_base.py\", line 243, in as_completed\n", " waiter.event.wait(wait_timeout)\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/threading.py\", line 655, in wait\n", " signaled = self._cond.wait(timeout)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/threading.py\", line 355, in wait\n", " waiter.acquire()\n", "KeyboardInterrupt\n", "\n", "During handling of the above exception, another exception occurred:\n", "\n", "Traceback (most recent call last):\n", " File \"/home/rpotter/hypertower/scripts/main/refuge/run_unet_segmenter.py\", line 156, in \n", " main()\n", " File \"/home/rpotter/hypertower/scripts/main/refuge/run_unet_segmenter.py\", line 116, in main\n", " segmenter.prebuild_in_memory_cache(\n", " File \"/home/rpotter/hypertower/classes/unet_segmenter.py\", line 217, in prebuild_in_memory_cache\n", " with ThreadPoolExecutor(max_workers=workers) as ex:\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/concurrent/futures/_base.py\", line 647, in __exit__\n", " self.shutdown(wait=True)\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/concurrent/futures/thread.py\", line 238, in shutdown\n", " t.join()\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/threading.py\", line 1147, in join\n", " self._wait_for_tstate_lock()\n", " File \"/home/rpotter/miniconda3/envs/fundus_imaging/lib/python3.12/threading.py\", line 1167, in _wait_for_tstate_lock\n", " if lock.acquire(block, timeout):\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", "KeyboardInterrupt\n" ] } ], "source": [ "!python3 scripts/main/refuge/run_unet_segmenter.py \\\n", " --manifest manifest.csv \\\n", " --train --evaluate \\\n", " --normalize per_image \\\n", " --train-datasets refuge --val-datasets refuge --holdout-datasets refuge \\\n", " --epochs 40 --batch-size 8 \\\n", " --device cuda --loader-workers 14 \\\n", " --in-memory-cache --cache-workers 4 \\\n", " --checkpoint-dir models/v2/refuge/segmentation/per_image \\\n", " --eval-output analysis_data/segmenter_eval/v2_refuge_per_image \\\n", " --eval-metrics-path analysis_data/segmenter_eval/v2_refuge_per_image/metrics.csv" ] }, { "cell_type": "markdown", "id": "l015x7js5e", "metadata": {}, "source": [ "## 3) Image-Only Baseline\n", "\n", "Single-eye CNN with no metadata input (`--bridge-mode image_only`) across three crop strategies. \n", "Isolates the image tower's standalone contribution. \n", "Outputs under `analysis_data/pipeline_imgonly_{nocrop,gt,unet}/`." ] }, { "cell_type": "code", "execution_count": 8, "id": "rxe51x7s1y", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[imgonly] pipeline_imgonly_nocrop/binary already complete — skipping.\n", "[imgonly] pipeline_imgonly_nocrop/multiclass already complete — skipping.\n", "[imgonly] pipeline_imgonly_gt/binary already complete — skipping.\n", "[imgonly] pipeline_imgonly_gt/multiclass already complete — skipping.\n", "[imgonly] pipeline_imgonly_unet/binary already complete — skipping.\n", "[imgonly] pipeline_imgonly_unet/multiclass already complete — skipping.\n" ] } ], "source": [ "import subprocess\n", "from pathlib import Path\n", "\n", "COMMON = [\n", " \"--tower-mode\", \"single\",\n", " \"--epochs\", \"40\",\n", " \"--n-splits\", \"5\",\n", " \"--backbone\", \"refugelike\",\n", " \"--bridge-mode\", \"image_only\",\n", " \"--single-warmup-tower-epochs\", \"4\",\n", " \"--single-warmup-fused-epochs\", \"0\",\n", " \"--img-crop-manifest\", \"manifest.csv\",\n", "]\n", "RUNS = [\n", " (\"pipeline_imgonly_nocrop\", \"binary\", []),\n", " (\"pipeline_imgonly_nocrop\", \"multiclass\", []),\n", " (\"pipeline_imgonly_gt\", \"binary\", [\"--img-crop-gt\"]),\n", " (\"pipeline_imgonly_gt\", \"multiclass\", [\"--img-crop-gt\"]),\n", " (\"pipeline_imgonly_unet\", \"binary\", [\"--img-crop-weights\",\n", " \"models/v2/refuge/segmentation/per_image/best.pt\"]),\n", " (\"pipeline_imgonly_unet\", \"multiclass\", [\"--img-crop-weights\",\n", " \"models/v2/refuge/segmentation/per_image/best.pt\"]),\n", "]\n", "\n", "for run_name, eval_mode, extra in RUNS:\n", " tm_dir = Path(\"analysis_data\") / run_name / eval_mode / \"single\"\n", " if (tm_dir / \"summary.json\").exists():\n", " print(f\"[imgonly] {run_name}/{eval_mode} already complete — skipping.\")\n", " continue\n", " print(f\"[imgonly] Running {run_name}/{eval_mode} ...\")\n", " subprocess.run([\n", " \"python\", \"scripts/main/v2/run_multifold_v2.py\",\n", " \"--run-name\", run_name,\n", " \"--eval-mode\", eval_mode,\n", " *COMMON, *extra,\n", " ], check=True)" ] }, { "cell_type": "markdown", "id": "fdlshq9xgd4", "metadata": {}, "source": [ "## 4) MD-Only Baseline\n", "\n", "Metadata-only MLP for 50, 200, and 500 epochs (binary + multiclass). \n", "Establishes the ceiling of what clinical features alone can achieve. \n", "Outputs under `analysis_data/pipeline_mdonly_{50,200,500}ep/`." ] }, { "cell_type": "code", "execution_count": 9, "id": "iszo0mnqsci", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[mdonly] Running pipeline_mdonly_50ep/binary (50 epochs) ...\n", "Device: cuda\n", "Loading PAPILA data...\n", "Loaded: 488 rows feature_dim=25\n", "[binary] rows=420\n", "\n", "[fold 1/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.5988 acc=0.7656 val_auc=0.2370 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.4603 acc=0.8094 val_auc=0.6775 val_acc=0.8250 best_auc=0.6775\n", " ep 20/54 [main:16/50] loss=0.4198 acc=0.8219 val_auc=0.7662 val_acc=0.8250 best_auc=0.7662\n", " ep 30/54 [main:26/50] loss=0.3825 acc=0.8469 val_auc=0.7587 val_acc=0.8500 best_auc=0.7695\n", " ep 40/54 [main:36/50] loss=0.3610 acc=0.8469 val_auc=0.7413 val_acc=0.8500 best_auc=0.7695\n", " ep 50/54 [main:46/50] loss=0.3039 acc=0.8812 val_auc=0.7381 val_acc=0.8375 best_auc=0.7695\n", " ep 54/54 [main:50/50] loss=0.3169 acc=0.8750 val_auc=0.7435 val_acc=0.8375 best_auc=0.7695\n", " [fold 1] best_epoch=25 best_auc=0.7695 val_auc=0.7695 val_acc=0.8375 hld_auc=0.5800 hld_acc=0.5000\n", "\n", "[fold 2/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.5964 acc=0.8063 val_auc=0.4177 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.4601 acc=0.8063 val_auc=0.5920 val_acc=0.8250 best_auc=0.5920\n", " ep 20/54 [main:16/50] loss=0.4066 acc=0.8250 val_auc=0.6461 val_acc=0.8375 best_auc=0.6461\n", " ep 30/54 [main:26/50] loss=0.3487 acc=0.8469 val_auc=0.6537 val_acc=0.8625 best_auc=0.6580\n", " ep 40/54 [main:36/50] loss=0.3416 acc=0.8656 val_auc=0.6634 val_acc=0.8625 best_auc=0.6634\n", " ep 50/54 [main:46/50] loss=0.3135 acc=0.8719 val_auc=0.6656 val_acc=0.8625 best_auc=0.6667\n", " ep 54/54 [main:50/50] loss=0.3103 acc=0.8562 val_auc=0.6656 val_acc=0.8625 best_auc=0.6667\n", " [fold 2] best_epoch=47 best_auc=0.6667 val_auc=0.6667 val_acc=0.8625 hld_auc=0.5000 hld_acc=0.5000\n", "\n", "[fold 3/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.5475 acc=0.8031 val_auc=0.4762 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.4553 acc=0.8031 val_auc=0.6623 val_acc=0.8250 best_auc=0.6623\n", " ep 20/54 [main:16/50] loss=0.4149 acc=0.8187 val_auc=0.7294 val_acc=0.8500 best_auc=0.7294\n", " ep 30/54 [main:26/50] loss=0.3846 acc=0.8500 val_auc=0.7933 val_acc=0.8625 best_auc=0.7933\n", " ep 40/54 [main:36/50] loss=0.3680 acc=0.8531 val_auc=0.8052 val_acc=0.8750 best_auc=0.8084\n", " ep 50/54 [main:46/50] loss=0.3459 acc=0.8531 val_auc=0.7911 val_acc=0.9125 best_auc=0.8084\n", " ep 54/54 [main:50/50] loss=0.3489 acc=0.8406 val_auc=0.7846 val_acc=0.9125 best_auc=0.8084\n", " [fold 3] best_epoch=37 best_auc=0.8084 val_auc=0.8084 val_acc=0.8625 hld_auc=0.7100 hld_acc=0.4500\n", "\n", "[fold 4/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.5713 acc=0.8063 val_auc=0.4903 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.4369 acc=0.8063 val_auc=0.3777 val_acc=0.8250 best_auc=0.4113\n", " ep 20/54 [main:16/50] loss=0.3740 acc=0.8375 val_auc=0.3853 val_acc=0.7875 best_auc=0.4113\n", " ep 30/54 [main:26/50] loss=0.3242 acc=0.8688 val_auc=0.4113 val_acc=0.7750 best_auc=0.4113\n", " ep 40/54 [main:36/50] loss=0.2934 acc=0.8719 val_auc=0.4491 val_acc=0.7750 best_auc=0.4491\n", " ep 50/54 [main:46/50] loss=0.2671 acc=0.8906 val_auc=0.4740 val_acc=0.7750 best_auc=0.4740\n", " ep 54/54 [main:50/50] loss=0.2551 acc=0.9031 val_auc=0.4784 val_acc=0.7750 best_auc=0.4784\n", " [fold 4] best_epoch=54 best_auc=0.4784 val_auc=0.4784 val_acc=0.7750 hld_auc=0.8000 hld_acc=0.5000\n", "\n", "[fold 5/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.5481 acc=0.8125 val_auc=0.6017 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.4490 acc=0.8125 val_auc=0.7197 val_acc=0.8250 best_auc=0.7197\n", " ep 20/54 [main:16/50] loss=0.3940 acc=0.8375 val_auc=0.7792 val_acc=0.8250 best_auc=0.7792\n", " ep 30/54 [main:26/50] loss=0.3663 acc=0.8688 val_auc=0.7944 val_acc=0.8125 best_auc=0.7955\n", " ep 40/54 [main:36/50] loss=0.3286 acc=0.8656 val_auc=0.7922 val_acc=0.7875 best_auc=0.7955\n", " ep 50/54 [main:46/50] loss=0.3239 acc=0.8594 val_auc=0.8030 val_acc=0.8000 best_auc=0.8030\n", " ep 54/54 [main:50/50] loss=0.3115 acc=0.8656 val_auc=0.7998 val_acc=0.8000 best_auc=0.8041\n", " [fold 5] best_epoch=52 best_auc=0.8041 val_auc=0.8041 val_acc=0.8000 hld_auc=0.5600 hld_acc=0.4500\n", "\n", "Mean val AUC: 0.7054 ± 0.1245\n", "Mean hld AUC: 0.6300 ± 0.1092\n", "\n", "Outputs written to: analysis_data/pipeline_mdonly_50ep/binary/single\n", "[mdonly] Running pipeline_mdonly_50ep/multiclass (50 epochs) ...\n", "Device: cuda\n", "Loading PAPILA data...\n", "Loaded: 488 rows feature_dim=25\n", "[multiclass] rows=488\n", "\n", "[fold 1/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.9215 acc=0.7049 val_auc=0.6492 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.7160 acc=0.7104 val_auc=0.7519 val_acc=0.7174 best_auc=0.7612\n", " ep 20/54 [main:16/50] loss=0.6363 acc=0.7377 val_auc=0.7535 val_acc=0.7065 best_auc=0.7612\n", " ep 30/54 [main:26/50] loss=0.5719 acc=0.7842 val_auc=0.7438 val_acc=0.7174 best_auc=0.7612\n", " ep 40/54 [main:36/50] loss=0.5291 acc=0.8087 val_auc=0.7310 val_acc=0.7174 best_auc=0.7612\n", " ep 50/54 [main:46/50] loss=0.4794 acc=0.8306 val_auc=0.7027 val_acc=0.7283 best_auc=0.7612\n", " ep 54/54 [main:50/50] loss=0.4775 acc=0.8361 val_auc=0.6934 val_acc=0.7391 best_auc=0.7612\n", " [fold 1] best_epoch=5 best_auc=0.7612 val_auc=0.7612 val_acc=0.7174 hld_auc=0.4217 hld_acc=0.3333\n", "\n", "[fold 2/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.9416 acc=0.6967 val_auc=0.4703 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.7288 acc=0.7049 val_auc=0.6768 val_acc=0.7174 best_auc=0.6768\n", " ep 20/54 [main:16/50] loss=0.6289 acc=0.7459 val_auc=0.7148 val_acc=0.7065 best_auc=0.7148\n", " ep 30/54 [main:26/50] loss=0.5674 acc=0.7896 val_auc=0.7391 val_acc=0.7500 best_auc=0.7403\n", " ep 40/54 [main:36/50] loss=0.5347 acc=0.8033 val_auc=0.7321 val_acc=0.7609 best_auc=0.7403\n", " ep 50/54 [main:46/50] loss=0.5023 acc=0.8060 val_auc=0.7281 val_acc=0.7609 best_auc=0.7403\n", " ep 54/54 [main:50/50] loss=0.4806 acc=0.8142 val_auc=0.7234 val_acc=0.7500 best_auc=0.7403\n", " [fold 2] best_epoch=29 best_auc=0.7403 val_auc=0.7403 val_acc=0.7609 hld_auc=0.5500 hld_acc=0.3333\n", "\n", "[fold 3/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=0.9288 acc=0.6940 val_auc=0.6277 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.7393 acc=0.7077 val_auc=0.7557 val_acc=0.7174 best_auc=0.7557\n", " ep 20/54 [main:16/50] loss=0.6692 acc=0.7240 val_auc=0.7913 val_acc=0.7609 best_auc=0.7913\n", " ep 30/54 [main:26/50] loss=0.6241 acc=0.7514 val_auc=0.8358 val_acc=0.7609 best_auc=0.8358\n", " ep 40/54 [main:36/50] loss=0.5925 acc=0.7678 val_auc=0.8517 val_acc=0.8152 best_auc=0.8527\n", " ep 50/54 [main:46/50] loss=0.5600 acc=0.7923 val_auc=0.8450 val_acc=0.8043 best_auc=0.8540\n", " ep 54/54 [main:50/50] loss=0.5472 acc=0.7814 val_auc=0.8433 val_acc=0.8043 best_auc=0.8540\n", " [fold 3] best_epoch=42 best_auc=0.8540 val_auc=0.8540 val_acc=0.8043 hld_auc=0.5350 hld_acc=0.3000\n", "\n", "[fold 4/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=1.0350 acc=0.5328 val_auc=0.5300 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.7149 acc=0.7104 val_auc=0.5712 val_acc=0.7174 best_auc=0.5712\n", " ep 20/54 [main:16/50] loss=0.6127 acc=0.7596 val_auc=0.6179 val_acc=0.7174 best_auc=0.6179\n", " ep 30/54 [main:26/50] loss=0.5604 acc=0.7842 val_auc=0.6142 val_acc=0.7283 best_auc=0.6217\n", " ep 40/54 [main:36/50] loss=0.5136 acc=0.8005 val_auc=0.6187 val_acc=0.7500 best_auc=0.6217\n", " ep 50/54 [main:46/50] loss=0.4896 acc=0.7978 val_auc=0.6158 val_acc=0.7391 best_auc=0.6217\n", " ep 54/54 [main:50/50] loss=0.4676 acc=0.8361 val_auc=0.6133 val_acc=0.7391 best_auc=0.6217\n", " [fold 4] best_epoch=24 best_auc=0.6217 val_auc=0.6217 val_acc=0.7174 hld_auc=0.6583 hld_acc=0.3000\n", "\n", "[fold 5/5] eye_train_n=368 bilat_val_n=45 holdout_n=15 warmup=2+2 total=54\n", " ep 1/54 [tower_warmup:0/50] loss=1.0644 acc=0.4647 val_auc=0.6210 val_acc=0.7333 best_auc=-1.0000\n", " ep 10/54 [main:6/50] loss=0.7349 acc=0.7011 val_auc=0.7760 val_acc=0.7333 best_auc=0.7760\n", " ep 20/54 [main:16/50] loss=0.6384 acc=0.7391 val_auc=0.7797 val_acc=0.7444 best_auc=0.7871\n", " ep 30/54 [main:26/50] loss=0.5760 acc=0.7935 val_auc=0.7702 val_acc=0.7444 best_auc=0.7871\n", " ep 40/54 [main:36/50] loss=0.5421 acc=0.7962 val_auc=0.7748 val_acc=0.7222 best_auc=0.7871\n", " ep 50/54 [main:46/50] loss=0.4985 acc=0.8288 val_auc=0.7850 val_acc=0.7222 best_auc=0.7871\n", " ep 54/54 [main:50/50] loss=0.5027 acc=0.8152 val_auc=0.7872 val_acc=0.7333 best_auc=0.7892\n", " [fold 5] best_epoch=51 best_auc=0.7892 val_auc=0.7892 val_acc=0.7556 hld_auc=0.5783 hld_acc=0.3000\n", "\n", "Mean val AUC: 0.7533 ± 0.0762\n", "Mean hld AUC: 0.5487 ± 0.0765\n", "\n", "Outputs written to: analysis_data/pipeline_mdonly_50ep/multiclass/single\n", "[mdonly] Running pipeline_mdonly_200ep/binary (200 epochs) ...\n", "Device: cuda\n", "Loading PAPILA data...\n", "Loaded: 488 rows feature_dim=25\n", "[binary] rows=420\n", "\n", "[fold 1/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=0.5988 acc=0.7656 val_auc=0.2370 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.4603 acc=0.8094 val_auc=0.6775 val_acc=0.8250 best_auc=0.6775\n", " ep 20/204 [main:16/200] loss=0.4198 acc=0.8219 val_auc=0.7662 val_acc=0.8250 best_auc=0.7662\n", " ep 30/204 [main:26/200] loss=0.3825 acc=0.8469 val_auc=0.7587 val_acc=0.8500 best_auc=0.7695\n", " ep 40/204 [main:36/200] loss=0.3610 acc=0.8469 val_auc=0.7413 val_acc=0.8500 best_auc=0.7695\n", " ep 50/204 [main:46/200] loss=0.3039 acc=0.8812 val_auc=0.7381 val_acc=0.8375 best_auc=0.7695\n", " ep 60/204 [main:56/200] loss=0.3054 acc=0.8750 val_auc=0.7294 val_acc=0.8375 best_auc=0.7695\n", " ep 70/204 [main:66/200] loss=0.2816 acc=0.8844 val_auc=0.7078 val_acc=0.8250 best_auc=0.7695\n", " ep 80/204 [main:76/200] loss=0.2879 acc=0.8781 val_auc=0.7024 val_acc=0.8250 best_auc=0.7695\n", " ep 90/204 [main:86/200] loss=0.2758 acc=0.8969 val_auc=0.7002 val_acc=0.8375 best_auc=0.7695\n", " ep 100/204 [main:96/200] loss=0.2590 acc=0.8812 val_auc=0.6926 val_acc=0.8250 best_auc=0.7695\n", " ep 110/204 [main:106/200] loss=0.2618 acc=0.8719 val_auc=0.6786 val_acc=0.8000 best_auc=0.7695\n", " ep 120/204 [main:116/200] loss=0.2554 acc=0.8844 val_auc=0.6634 val_acc=0.8000 best_auc=0.7695\n", " ep 130/204 [main:126/200] loss=0.2351 acc=0.9125 val_auc=0.6558 val_acc=0.8125 best_auc=0.7695\n", " ep 140/204 [main:136/200] loss=0.2428 acc=0.9000 val_auc=0.6580 val_acc=0.8000 best_auc=0.7695\n", " ep 150/204 [main:146/200] loss=0.2035 acc=0.9062 val_auc=0.6569 val_acc=0.8250 best_auc=0.7695\n", " ep 160/204 [main:156/200] loss=0.2083 acc=0.9250 val_auc=0.6580 val_acc=0.8125 best_auc=0.7695\n", " ep 170/204 [main:166/200] loss=0.2079 acc=0.9062 val_auc=0.6537 val_acc=0.7875 best_auc=0.7695\n", " ep 180/204 [main:176/200] loss=0.2097 acc=0.9062 val_auc=0.6667 val_acc=0.8125 best_auc=0.7695\n", " ep 190/204 [main:186/200] loss=0.2072 acc=0.9062 val_auc=0.6472 val_acc=0.8125 best_auc=0.7695\n", " ep 200/204 [main:196/200] loss=0.1776 acc=0.9281 val_auc=0.6580 val_acc=0.8000 best_auc=0.7695\n", " ep 204/204 [main:200/200] loss=0.1611 acc=0.9437 val_auc=0.6418 val_acc=0.7750 best_auc=0.7695\n", " [fold 1] best_epoch=25 best_auc=0.7695 val_auc=0.7695 val_acc=0.8375 hld_auc=0.5800 hld_acc=0.5000\n", "\n", "[fold 2/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=0.5739 acc=0.7969 val_auc=0.4870 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.4430 acc=0.8063 val_auc=0.6126 val_acc=0.8250 best_auc=0.6126\n", " ep 20/204 [main:16/200] loss=0.3938 acc=0.8438 val_auc=0.6558 val_acc=0.8625 best_auc=0.6558\n", " ep 30/204 [main:26/200] loss=0.3437 acc=0.8469 val_auc=0.6526 val_acc=0.8500 best_auc=0.6613\n", " ep 40/204 [main:36/200] loss=0.3410 acc=0.8688 val_auc=0.6613 val_acc=0.8500 best_auc=0.6613\n", " ep 50/204 [main:46/200] loss=0.3195 acc=0.8750 val_auc=0.6548 val_acc=0.8500 best_auc=0.6623\n", " ep 60/204 [main:56/200] loss=0.2857 acc=0.8875 val_auc=0.6591 val_acc=0.8625 best_auc=0.6623\n", " ep 70/204 [main:66/200] loss=0.2833 acc=0.8719 val_auc=0.6504 val_acc=0.8375 best_auc=0.6623\n", " ep 80/204 [main:76/200] loss=0.2802 acc=0.8812 val_auc=0.6580 val_acc=0.8500 best_auc=0.6623\n", " ep 90/204 [main:86/200] loss=0.2743 acc=0.8844 val_auc=0.6515 val_acc=0.8375 best_auc=0.6623\n", " ep 100/204 [main:96/200] loss=0.2643 acc=0.8844 val_auc=0.6569 val_acc=0.8375 best_auc=0.6623\n", " ep 110/204 [main:106/200] loss=0.2620 acc=0.8875 val_auc=0.6537 val_acc=0.8500 best_auc=0.6623\n", " ep 120/204 [main:116/200] loss=0.2534 acc=0.8844 val_auc=0.6515 val_acc=0.8375 best_auc=0.6623\n", " ep 130/204 [main:126/200] loss=0.2491 acc=0.8906 val_auc=0.6526 val_acc=0.8500 best_auc=0.6623\n", " ep 140/204 [main:136/200] loss=0.2354 acc=0.9000 val_auc=0.6494 val_acc=0.8500 best_auc=0.6623\n", " ep 150/204 [main:146/200] loss=0.2436 acc=0.8938 val_auc=0.6439 val_acc=0.8500 best_auc=0.6623\n", " ep 160/204 [main:156/200] loss=0.2197 acc=0.9187 val_auc=0.6461 val_acc=0.8625 best_auc=0.6623\n", " ep 170/204 [main:166/200] loss=0.2178 acc=0.9062 val_auc=0.6472 val_acc=0.8375 best_auc=0.6623\n", " ep 180/204 [main:176/200] loss=0.2071 acc=0.9187 val_auc=0.6396 val_acc=0.8500 best_auc=0.6623\n", " ep 190/204 [main:186/200] loss=0.2003 acc=0.9156 val_auc=0.6429 val_acc=0.8500 best_auc=0.6623\n", " ep 200/204 [main:196/200] loss=0.1955 acc=0.9125 val_auc=0.6396 val_acc=0.8625 best_auc=0.6623\n", " ep 204/204 [main:200/200] loss=0.1903 acc=0.9250 val_auc=0.6450 val_acc=0.8375 best_auc=0.6623\n", " [fold 2] best_epoch=44 best_auc=0.6623 val_auc=0.6623 val_acc=0.8500 hld_auc=0.5000 hld_acc=0.4500\n", "\n", "[fold 3/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=0.5745 acc=0.7875 val_auc=0.5920 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.4615 acc=0.8031 val_auc=0.6396 val_acc=0.8250 best_auc=0.6396\n", " ep 20/204 [main:16/200] loss=0.4185 acc=0.8187 val_auc=0.6905 val_acc=0.8500 best_auc=0.6905\n", " ep 30/204 [main:26/200] loss=0.3964 acc=0.8313 val_auc=0.7489 val_acc=0.8625 best_auc=0.7489\n", " ep 40/204 [main:36/200] loss=0.3714 acc=0.8500 val_auc=0.7835 val_acc=0.8750 best_auc=0.7846\n", " ep 50/204 [main:46/200] loss=0.3616 acc=0.8375 val_auc=0.7944 val_acc=0.8875 best_auc=0.7965\n", " ep 60/204 [main:56/200] loss=0.3451 acc=0.8438 val_auc=0.8009 val_acc=0.8875 best_auc=0.8009\n", " ep 70/204 [main:66/200] loss=0.3415 acc=0.8469 val_auc=0.7976 val_acc=0.9125 best_auc=0.8019\n", " ep 80/204 [main:76/200] loss=0.3140 acc=0.8562 val_auc=0.7922 val_acc=0.9125 best_auc=0.8019\n", " ep 90/204 [main:86/200] loss=0.3013 acc=0.8656 val_auc=0.7706 val_acc=0.9250 best_auc=0.8019\n", " ep 100/204 [main:96/200] loss=0.2948 acc=0.8625 val_auc=0.7597 val_acc=0.9000 best_auc=0.8019\n", " ep 110/204 [main:106/200] loss=0.2834 acc=0.8656 val_auc=0.7532 val_acc=0.9000 best_auc=0.8019\n", " ep 120/204 [main:116/200] loss=0.2738 acc=0.8750 val_auc=0.7489 val_acc=0.8875 best_auc=0.8019\n", " ep 130/204 [main:126/200] loss=0.2498 acc=0.8906 val_auc=0.7468 val_acc=0.8625 best_auc=0.8019\n", " ep 140/204 [main:136/200] loss=0.2613 acc=0.8719 val_auc=0.7338 val_acc=0.8875 best_auc=0.8019\n", " ep 150/204 [main:146/200] loss=0.2461 acc=0.8938 val_auc=0.7294 val_acc=0.8625 best_auc=0.8019\n", " ep 160/204 [main:156/200] loss=0.2333 acc=0.9031 val_auc=0.7165 val_acc=0.8375 best_auc=0.8019\n", " ep 170/204 [main:166/200] loss=0.2222 acc=0.9062 val_auc=0.7154 val_acc=0.8375 best_auc=0.8019\n", " ep 180/204 [main:176/200] loss=0.2088 acc=0.9094 val_auc=0.7121 val_acc=0.8375 best_auc=0.8019\n", " ep 190/204 [main:186/200] loss=0.2116 acc=0.9094 val_auc=0.7056 val_acc=0.8125 best_auc=0.8019\n", " ep 200/204 [main:196/200] loss=0.2075 acc=0.9156 val_auc=0.7013 val_acc=0.8250 best_auc=0.8019\n", " ep 204/204 [main:200/200] loss=0.1858 acc=0.9187 val_auc=0.7045 val_acc=0.8250 best_auc=0.8019\n", " [fold 3] best_epoch=64 best_auc=0.8019 val_auc=0.8019 val_acc=0.8875 hld_auc=0.6400 hld_acc=0.4500\n", "\n", "[fold 4/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=0.5552 acc=0.8063 val_auc=0.3690 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.4138 acc=0.8094 val_auc=0.3810 val_acc=0.8250 best_auc=0.3810\n", " ep 20/204 [main:16/200] loss=0.3401 acc=0.8562 val_auc=0.4037 val_acc=0.7750 best_auc=0.4037\n", " ep 30/204 [main:26/200] loss=0.3126 acc=0.8844 val_auc=0.4535 val_acc=0.7750 best_auc=0.4535\n", " ep 40/204 [main:36/200] loss=0.3020 acc=0.8812 val_auc=0.4827 val_acc=0.7750 best_auc=0.4827\n", " ep 50/204 [main:46/200] loss=0.2794 acc=0.8844 val_auc=0.5032 val_acc=0.7750 best_auc=0.5032\n", " ep 60/204 [main:56/200] loss=0.2739 acc=0.8844 val_auc=0.5141 val_acc=0.7625 best_auc=0.5141\n", " ep 70/204 [main:66/200] loss=0.2665 acc=0.8875 val_auc=0.5130 val_acc=0.7625 best_auc=0.5271\n", " ep 80/204 [main:76/200] loss=0.2386 acc=0.8969 val_auc=0.4989 val_acc=0.7625 best_auc=0.5271\n", " ep 90/204 [main:86/200] loss=0.2348 acc=0.9031 val_auc=0.5054 val_acc=0.7500 best_auc=0.5271\n", " ep 100/204 [main:96/200] loss=0.2346 acc=0.9031 val_auc=0.5087 val_acc=0.7625 best_auc=0.5271\n", " ep 110/204 [main:106/200] loss=0.2206 acc=0.9031 val_auc=0.5130 val_acc=0.7375 best_auc=0.5271\n", " ep 120/204 [main:116/200] loss=0.2059 acc=0.9187 val_auc=0.5130 val_acc=0.7375 best_auc=0.5271\n", " ep 130/204 [main:126/200] loss=0.1999 acc=0.8969 val_auc=0.5097 val_acc=0.7250 best_auc=0.5271\n", " ep 140/204 [main:136/200] loss=0.1935 acc=0.9031 val_auc=0.5119 val_acc=0.7250 best_auc=0.5271\n", " ep 150/204 [main:146/200] loss=0.1954 acc=0.9156 val_auc=0.5195 val_acc=0.7375 best_auc=0.5271\n", " ep 160/204 [main:156/200] loss=0.1749 acc=0.9219 val_auc=0.5162 val_acc=0.7375 best_auc=0.5271\n", " ep 170/204 [main:166/200] loss=0.1705 acc=0.9281 val_auc=0.5152 val_acc=0.7500 best_auc=0.5271\n", " ep 180/204 [main:176/200] loss=0.1592 acc=0.9250 val_auc=0.5292 val_acc=0.7250 best_auc=0.5292\n", " ep 190/204 [main:186/200] loss=0.1692 acc=0.9219 val_auc=0.5227 val_acc=0.7250 best_auc=0.5292\n", " ep 200/204 [main:196/200] loss=0.1409 acc=0.9313 val_auc=0.5303 val_acc=0.7375 best_auc=0.5303\n", " ep 204/204 [main:200/200] loss=0.1557 acc=0.9313 val_auc=0.5249 val_acc=0.7250 best_auc=0.5303\n", " [fold 4] best_epoch=200 best_auc=0.5303 val_auc=0.5303 val_acc=0.7375 hld_auc=0.7200 hld_acc=0.5500\n", "\n", "[fold 5/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=0.5489 acc=0.8063 val_auc=0.4091 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.4378 acc=0.8125 val_auc=0.7392 val_acc=0.8250 best_auc=0.7392\n", " ep 20/204 [main:16/200] loss=0.3780 acc=0.8562 val_auc=0.8084 val_acc=0.8250 best_auc=0.8084\n", " ep 30/204 [main:26/200] loss=0.3426 acc=0.8656 val_auc=0.8041 val_acc=0.8000 best_auc=0.8106\n", " ep 40/204 [main:36/200] loss=0.3201 acc=0.8656 val_auc=0.8074 val_acc=0.8000 best_auc=0.8106\n", " ep 50/204 [main:46/200] loss=0.3025 acc=0.8719 val_auc=0.8095 val_acc=0.7875 best_auc=0.8106\n", " ep 60/204 [main:56/200] loss=0.2993 acc=0.8750 val_auc=0.8019 val_acc=0.7875 best_auc=0.8117\n", " ep 70/204 [main:66/200] loss=0.2893 acc=0.8719 val_auc=0.7976 val_acc=0.8000 best_auc=0.8117\n", " ep 80/204 [main:76/200] loss=0.2879 acc=0.8781 val_auc=0.7976 val_acc=0.8000 best_auc=0.8117\n", " ep 90/204 [main:86/200] loss=0.2763 acc=0.8812 val_auc=0.7998 val_acc=0.8000 best_auc=0.8117\n", " ep 100/204 [main:96/200] loss=0.2782 acc=0.8875 val_auc=0.8009 val_acc=0.8000 best_auc=0.8117\n", " ep 110/204 [main:106/200] loss=0.2583 acc=0.8875 val_auc=0.8030 val_acc=0.7875 best_auc=0.8117\n", " ep 120/204 [main:116/200] loss=0.2577 acc=0.8781 val_auc=0.7998 val_acc=0.8125 best_auc=0.8117\n", " ep 130/204 [main:126/200] loss=0.2399 acc=0.8844 val_auc=0.7976 val_acc=0.8000 best_auc=0.8117\n", " ep 140/204 [main:136/200] loss=0.2393 acc=0.9000 val_auc=0.8041 val_acc=0.8125 best_auc=0.8117\n", " ep 150/204 [main:146/200] loss=0.2309 acc=0.8938 val_auc=0.8052 val_acc=0.7875 best_auc=0.8117\n", " ep 160/204 [main:156/200] loss=0.2332 acc=0.8906 val_auc=0.8052 val_acc=0.7875 best_auc=0.8117\n", " ep 170/204 [main:166/200] loss=0.2049 acc=0.9000 val_auc=0.7998 val_acc=0.7750 best_auc=0.8117\n", " ep 180/204 [main:176/200] loss=0.2203 acc=0.9094 val_auc=0.8019 val_acc=0.7750 best_auc=0.8117\n", " ep 190/204 [main:186/200] loss=0.2085 acc=0.9031 val_auc=0.7965 val_acc=0.7750 best_auc=0.8117\n", " ep 200/204 [main:196/200] loss=0.2196 acc=0.9125 val_auc=0.7922 val_acc=0.7750 best_auc=0.8117\n", " ep 204/204 [main:200/200] loss=0.1911 acc=0.9094 val_auc=0.7998 val_acc=0.7750 best_auc=0.8117\n", " [fold 5] best_epoch=51 best_auc=0.8117 val_auc=0.8117 val_acc=0.7875 hld_auc=0.5300 hld_acc=0.5000\n", "\n", "Mean val AUC: 0.7152 ± 0.1065\n", "Mean hld AUC: 0.5940 ± 0.0789\n", "\n", "Outputs written to: analysis_data/pipeline_mdonly_200ep/binary/single\n", "[mdonly] Running pipeline_mdonly_200ep/multiclass (200 epochs) ...\n", "Device: cuda\n", "Loading PAPILA data...\n", "Loaded: 488 rows feature_dim=25\n", "[multiclass] rows=488\n", "\n", "[fold 1/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=0.9215 acc=0.7049 val_auc=0.6492 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.7160 acc=0.7104 val_auc=0.7519 val_acc=0.7174 best_auc=0.7612\n", " ep 20/204 [main:16/200] loss=0.6363 acc=0.7377 val_auc=0.7535 val_acc=0.7065 best_auc=0.7612\n", " ep 30/204 [main:26/200] loss=0.5719 acc=0.7842 val_auc=0.7438 val_acc=0.7174 best_auc=0.7612\n", " ep 40/204 [main:36/200] loss=0.5291 acc=0.8087 val_auc=0.7310 val_acc=0.7174 best_auc=0.7612\n", " ep 50/204 [main:46/200] loss=0.4794 acc=0.8306 val_auc=0.7027 val_acc=0.7283 best_auc=0.7612\n", " ep 60/204 [main:56/200] loss=0.4759 acc=0.8197 val_auc=0.6771 val_acc=0.7391 best_auc=0.7612\n", " ep 70/204 [main:66/200] loss=0.4396 acc=0.8470 val_auc=0.6640 val_acc=0.7283 best_auc=0.7612\n", " ep 80/204 [main:76/200] loss=0.4274 acc=0.8525 val_auc=0.6494 val_acc=0.7283 best_auc=0.7612\n", " ep 90/204 [main:86/200] loss=0.4066 acc=0.8661 val_auc=0.6401 val_acc=0.7500 best_auc=0.7612\n", " ep 100/204 [main:96/200] loss=0.4050 acc=0.8388 val_auc=0.6270 val_acc=0.7391 best_auc=0.7612\n", " ep 110/204 [main:106/200] loss=0.3956 acc=0.8497 val_auc=0.6195 val_acc=0.7283 best_auc=0.7612\n", " ep 120/204 [main:116/200] loss=0.3786 acc=0.8634 val_auc=0.6193 val_acc=0.7391 best_auc=0.7612\n", " ep 130/204 [main:126/200] loss=0.3701 acc=0.8579 val_auc=0.6133 val_acc=0.7283 best_auc=0.7612\n", " ep 140/204 [main:136/200] loss=0.3573 acc=0.8661 val_auc=0.6060 val_acc=0.7391 best_auc=0.7612\n", " ep 150/204 [main:146/200] loss=0.3531 acc=0.8716 val_auc=0.6042 val_acc=0.7283 best_auc=0.7612\n", " ep 160/204 [main:156/200] loss=0.3431 acc=0.8743 val_auc=0.6029 val_acc=0.7391 best_auc=0.7612\n", " ep 170/204 [main:166/200] loss=0.3346 acc=0.8852 val_auc=0.5953 val_acc=0.7391 best_auc=0.7612\n", " ep 180/204 [main:176/200] loss=0.3195 acc=0.8852 val_auc=0.5861 val_acc=0.7174 best_auc=0.7612\n", " ep 190/204 [main:186/200] loss=0.3279 acc=0.8661 val_auc=0.5845 val_acc=0.7174 best_auc=0.7612\n", " ep 200/204 [main:196/200] loss=0.3326 acc=0.8661 val_auc=0.5792 val_acc=0.7283 best_auc=0.7612\n", " ep 204/204 [main:200/200] loss=0.3101 acc=0.8880 val_auc=0.5812 val_acc=0.7283 best_auc=0.7612\n", " [fold 1] best_epoch=5 best_auc=0.7612 val_auc=0.7612 val_acc=0.7174 hld_auc=0.4217 hld_acc=0.3333\n", "\n", "[fold 2/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=0.9533 acc=0.6503 val_auc=0.6492 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.7264 acc=0.7049 val_auc=0.7070 val_acc=0.7174 best_auc=0.7088\n", " ep 20/204 [main:16/200] loss=0.6305 acc=0.7432 val_auc=0.7343 val_acc=0.7065 best_auc=0.7343\n", " ep 30/204 [main:26/200] loss=0.5770 acc=0.7760 val_auc=0.7498 val_acc=0.7391 best_auc=0.7503\n", " ep 40/204 [main:36/200] loss=0.5345 acc=0.7896 val_auc=0.7405 val_acc=0.7717 best_auc=0.7503\n", " ep 50/204 [main:46/200] loss=0.5139 acc=0.8005 val_auc=0.7328 val_acc=0.7717 best_auc=0.7503\n", " ep 60/204 [main:56/200] loss=0.4800 acc=0.8388 val_auc=0.7218 val_acc=0.7609 best_auc=0.7503\n", " ep 70/204 [main:66/200] loss=0.4560 acc=0.8224 val_auc=0.7127 val_acc=0.7609 best_auc=0.7503\n", " ep 80/204 [main:76/200] loss=0.4648 acc=0.8115 val_auc=0.7034 val_acc=0.7500 best_auc=0.7503\n", " ep 90/204 [main:86/200] loss=0.4436 acc=0.8306 val_auc=0.7010 val_acc=0.7391 best_auc=0.7503\n", " ep 100/204 [main:96/200] loss=0.4308 acc=0.8388 val_auc=0.6944 val_acc=0.7391 best_auc=0.7503\n", " ep 110/204 [main:106/200] loss=0.4090 acc=0.8415 val_auc=0.6871 val_acc=0.7500 best_auc=0.7503\n", " ep 120/204 [main:116/200] loss=0.3838 acc=0.8333 val_auc=0.6830 val_acc=0.7391 best_auc=0.7503\n", " ep 130/204 [main:126/200] loss=0.3860 acc=0.8415 val_auc=0.6781 val_acc=0.7174 best_auc=0.7503\n", " ep 140/204 [main:136/200] loss=0.3774 acc=0.8333 val_auc=0.6757 val_acc=0.7065 best_auc=0.7503\n", " ep 150/204 [main:146/200] loss=0.3574 acc=0.8443 val_auc=0.6705 val_acc=0.6957 best_auc=0.7503\n", " ep 160/204 [main:156/200] loss=0.3646 acc=0.8525 val_auc=0.6681 val_acc=0.7065 best_auc=0.7503\n", " ep 170/204 [main:166/200] loss=0.3261 acc=0.8661 val_auc=0.6671 val_acc=0.7065 best_auc=0.7503\n", " ep 180/204 [main:176/200] loss=0.3183 acc=0.8607 val_auc=0.6642 val_acc=0.7065 best_auc=0.7503\n", " ep 190/204 [main:186/200] loss=0.2923 acc=0.8689 val_auc=0.6680 val_acc=0.7065 best_auc=0.7503\n", " ep 200/204 [main:196/200] loss=0.2807 acc=0.8716 val_auc=0.6661 val_acc=0.6957 best_auc=0.7503\n", " ep 204/204 [main:200/200] loss=0.2871 acc=0.8716 val_auc=0.6660 val_acc=0.6848 best_auc=0.7503\n", " [fold 2] best_epoch=29 best_auc=0.7503 val_auc=0.7503 val_acc=0.7283 hld_auc=0.5367 hld_acc=0.3333\n", "\n", "[fold 3/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=1.0630 acc=0.4836 val_auc=0.5730 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.7452 acc=0.7077 val_auc=0.7362 val_acc=0.7174 best_auc=0.7362\n", " ep 20/204 [main:16/200] loss=0.6737 acc=0.7158 val_auc=0.7894 val_acc=0.7391 best_auc=0.7894\n", " ep 30/204 [main:26/200] loss=0.6139 acc=0.7623 val_auc=0.8285 val_acc=0.7717 best_auc=0.8292\n", " ep 40/204 [main:36/200] loss=0.5718 acc=0.7842 val_auc=0.8408 val_acc=0.7935 best_auc=0.8408\n", " ep 50/204 [main:46/200] loss=0.5544 acc=0.7923 val_auc=0.8405 val_acc=0.8043 best_auc=0.8441\n", " ep 60/204 [main:56/200] loss=0.5240 acc=0.7951 val_auc=0.8393 val_acc=0.8152 best_auc=0.8441\n", " ep 70/204 [main:66/200] loss=0.5097 acc=0.8115 val_auc=0.8315 val_acc=0.8261 best_auc=0.8441\n", " ep 80/204 [main:76/200] loss=0.4862 acc=0.8169 val_auc=0.8297 val_acc=0.8152 best_auc=0.8441\n", " ep 90/204 [main:86/200] loss=0.4767 acc=0.8306 val_auc=0.8227 val_acc=0.8261 best_auc=0.8441\n", " ep 100/204 [main:96/200] loss=0.4681 acc=0.8333 val_auc=0.8180 val_acc=0.8152 best_auc=0.8441\n", " ep 110/204 [main:106/200] loss=0.4497 acc=0.8306 val_auc=0.8152 val_acc=0.8043 best_auc=0.8441\n", " ep 120/204 [main:116/200] loss=0.4333 acc=0.8443 val_auc=0.8114 val_acc=0.7935 best_auc=0.8441\n", " ep 130/204 [main:126/200] loss=0.4451 acc=0.8251 val_auc=0.8065 val_acc=0.7826 best_auc=0.8441\n", " ep 140/204 [main:136/200] loss=0.4335 acc=0.8333 val_auc=0.7981 val_acc=0.8043 best_auc=0.8441\n", " ep 150/204 [main:146/200] loss=0.4196 acc=0.8361 val_auc=0.7953 val_acc=0.7935 best_auc=0.8441\n", " ep 160/204 [main:156/200] loss=0.3952 acc=0.8497 val_auc=0.7934 val_acc=0.7935 best_auc=0.8441\n", " ep 170/204 [main:166/200] loss=0.3855 acc=0.8470 val_auc=0.7897 val_acc=0.7935 best_auc=0.8441\n", " ep 180/204 [main:176/200] loss=0.3707 acc=0.8443 val_auc=0.7814 val_acc=0.8043 best_auc=0.8441\n", " ep 190/204 [main:186/200] loss=0.3666 acc=0.8470 val_auc=0.7735 val_acc=0.7935 best_auc=0.8441\n", " ep 200/204 [main:196/200] loss=0.3636 acc=0.8552 val_auc=0.7691 val_acc=0.7935 best_auc=0.8441\n", " ep 204/204 [main:200/200] loss=0.3708 acc=0.8497 val_auc=0.7661 val_acc=0.7935 best_auc=0.8441\n", " [fold 3] best_epoch=46 best_auc=0.8441 val_auc=0.8441 val_acc=0.8043 hld_auc=0.5217 hld_acc=0.3000\n", "\n", "[fold 4/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=1.0757 acc=0.4617 val_auc=0.5569 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.7289 acc=0.7022 val_auc=0.5487 val_acc=0.7174 best_auc=0.5487\n", " ep 20/204 [main:16/200] loss=0.6230 acc=0.7459 val_auc=0.6077 val_acc=0.7174 best_auc=0.6077\n", " ep 30/204 [main:26/200] loss=0.5567 acc=0.7814 val_auc=0.6170 val_acc=0.7391 best_auc=0.6170\n", " ep 40/204 [main:36/200] loss=0.5078 acc=0.8197 val_auc=0.6102 val_acc=0.7283 best_auc=0.6170\n", " ep 50/204 [main:46/200] loss=0.4803 acc=0.8224 val_auc=0.6023 val_acc=0.7391 best_auc=0.6170\n", " ep 60/204 [main:56/200] loss=0.4549 acc=0.8142 val_auc=0.6099 val_acc=0.7500 best_auc=0.6170\n", " ep 70/204 [main:66/200] loss=0.4485 acc=0.8197 val_auc=0.6040 val_acc=0.7500 best_auc=0.6170\n", " ep 80/204 [main:76/200] loss=0.4309 acc=0.8279 val_auc=0.5980 val_acc=0.7391 best_auc=0.6170\n", " ep 90/204 [main:86/200] loss=0.4135 acc=0.8251 val_auc=0.5937 val_acc=0.7391 best_auc=0.6170\n", " ep 100/204 [main:96/200] loss=0.4149 acc=0.8361 val_auc=0.5814 val_acc=0.7500 best_auc=0.6170\n", " ep 110/204 [main:106/200] loss=0.3953 acc=0.8388 val_auc=0.5798 val_acc=0.7391 best_auc=0.6170\n", " ep 120/204 [main:116/200] loss=0.3675 acc=0.8470 val_auc=0.5777 val_acc=0.7391 best_auc=0.6170\n", " ep 130/204 [main:126/200] loss=0.3791 acc=0.8361 val_auc=0.5625 val_acc=0.7391 best_auc=0.6170\n", " ep 140/204 [main:136/200] loss=0.3523 acc=0.8607 val_auc=0.5594 val_acc=0.7391 best_auc=0.6170\n", " ep 150/204 [main:146/200] loss=0.3482 acc=0.8361 val_auc=0.5592 val_acc=0.7391 best_auc=0.6170\n", " ep 160/204 [main:156/200] loss=0.3238 acc=0.8579 val_auc=0.5605 val_acc=0.7500 best_auc=0.6170\n", " ep 170/204 [main:166/200] loss=0.3292 acc=0.8579 val_auc=0.5550 val_acc=0.7500 best_auc=0.6170\n", " ep 180/204 [main:176/200] loss=0.3135 acc=0.8716 val_auc=0.5563 val_acc=0.7500 best_auc=0.6170\n", " ep 190/204 [main:186/200] loss=0.2999 acc=0.8743 val_auc=0.5524 val_acc=0.7391 best_auc=0.6170\n", " ep 200/204 [main:196/200] loss=0.2888 acc=0.8798 val_auc=0.5504 val_acc=0.7500 best_auc=0.6170\n", " ep 204/204 [main:200/200] loss=0.2920 acc=0.8825 val_auc=0.5486 val_acc=0.7283 best_auc=0.6170\n", " [fold 4] best_epoch=30 best_auc=0.6170 val_auc=0.6170 val_acc=0.7391 hld_auc=0.5950 hld_acc=0.3000\n", "\n", "[fold 5/5] eye_train_n=368 bilat_val_n=45 holdout_n=15 warmup=2+2 total=204\n", " ep 1/204 [tower_warmup:0/200] loss=1.0050 acc=0.5924 val_auc=0.5696 val_acc=0.7333 best_auc=-1.0000\n", " ep 10/204 [main:6/200] loss=0.7423 acc=0.7011 val_auc=0.7624 val_acc=0.7333 best_auc=0.7624\n", " ep 20/204 [main:16/200] loss=0.6489 acc=0.7500 val_auc=0.7844 val_acc=0.7222 best_auc=0.7861\n", " ep 30/204 [main:26/200] loss=0.5781 acc=0.7772 val_auc=0.7765 val_acc=0.7222 best_auc=0.7861\n", " ep 40/204 [main:36/200] loss=0.5341 acc=0.8071 val_auc=0.7971 val_acc=0.6889 best_auc=0.8001\n", " ep 50/204 [main:46/200] loss=0.4980 acc=0.8207 val_auc=0.8024 val_acc=0.7222 best_auc=0.8084\n", " ep 60/204 [main:56/200] loss=0.4828 acc=0.8098 val_auc=0.8074 val_acc=0.7222 best_auc=0.8119\n", " ep 70/204 [main:66/200] loss=0.4629 acc=0.8315 val_auc=0.8054 val_acc=0.7222 best_auc=0.8128\n", " ep 80/204 [main:76/200] loss=0.4440 acc=0.8342 val_auc=0.8138 val_acc=0.7111 best_auc=0.8143\n", " ep 90/204 [main:86/200] loss=0.4152 acc=0.8587 val_auc=0.8037 val_acc=0.7000 best_auc=0.8148\n", " ep 100/204 [main:96/200] loss=0.4250 acc=0.8261 val_auc=0.8042 val_acc=0.7111 best_auc=0.8148\n", " ep 110/204 [main:106/200] loss=0.3997 acc=0.8641 val_auc=0.7962 val_acc=0.6889 best_auc=0.8148\n", " ep 120/204 [main:116/200] loss=0.3718 acc=0.8478 val_auc=0.7978 val_acc=0.7111 best_auc=0.8148\n", " ep 130/204 [main:126/200] loss=0.3597 acc=0.8668 val_auc=0.7943 val_acc=0.7000 best_auc=0.8148\n", " ep 140/204 [main:136/200] loss=0.3480 acc=0.8696 val_auc=0.7901 val_acc=0.7000 best_auc=0.8148\n", " ep 150/204 [main:146/200] loss=0.3560 acc=0.8614 val_auc=0.7911 val_acc=0.7111 best_auc=0.8148\n", " ep 160/204 [main:156/200] loss=0.3363 acc=0.8533 val_auc=0.7884 val_acc=0.7000 best_auc=0.8148\n", " ep 170/204 [main:166/200] loss=0.3250 acc=0.8804 val_auc=0.7847 val_acc=0.7111 best_auc=0.8148\n", " ep 180/204 [main:176/200] loss=0.3256 acc=0.8614 val_auc=0.7833 val_acc=0.7111 best_auc=0.8148\n", " ep 190/204 [main:186/200] loss=0.3174 acc=0.8777 val_auc=0.7774 val_acc=0.7000 best_auc=0.8148\n", " ep 200/204 [main:196/200] loss=0.2991 acc=0.8777 val_auc=0.7692 val_acc=0.7000 best_auc=0.8148\n", " ep 204/204 [main:200/200] loss=0.2939 acc=0.8913 val_auc=0.7704 val_acc=0.7000 best_auc=0.8148\n", " [fold 5] best_epoch=82 best_auc=0.8148 val_auc=0.8148 val_acc=0.7111 hld_auc=0.5933 hld_acc=0.3667\n", "\n", "Mean val AUC: 0.7575 ± 0.0782\n", "Mean hld AUC: 0.5337 ± 0.0633\n", "\n", "Outputs written to: analysis_data/pipeline_mdonly_200ep/multiclass/single\n", "[mdonly] Running pipeline_mdonly_500ep/binary (500 epochs) ...\n", "Device: cuda\n", "Loading PAPILA data...\n", "Loaded: 488 rows feature_dim=25\n", "[binary] rows=420\n", "\n", "[fold 1/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.5988 acc=0.7656 val_auc=0.2370 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.4603 acc=0.8094 val_auc=0.6775 val_acc=0.8250 best_auc=0.6775\n", " ep 20/504 [main:16/500] loss=0.4198 acc=0.8219 val_auc=0.7662 val_acc=0.8250 best_auc=0.7662\n", " ep 30/504 [main:26/500] loss=0.3825 acc=0.8469 val_auc=0.7587 val_acc=0.8500 best_auc=0.7695\n", " ep 40/504 [main:36/500] loss=0.3610 acc=0.8469 val_auc=0.7413 val_acc=0.8500 best_auc=0.7695\n", " ep 50/504 [main:46/500] loss=0.3039 acc=0.8812 val_auc=0.7381 val_acc=0.8375 best_auc=0.7695\n", " ep 60/504 [main:56/500] loss=0.3054 acc=0.8750 val_auc=0.7294 val_acc=0.8375 best_auc=0.7695\n", " ep 70/504 [main:66/500] loss=0.2816 acc=0.8844 val_auc=0.7078 val_acc=0.8250 best_auc=0.7695\n", " ep 80/504 [main:76/500] loss=0.2879 acc=0.8781 val_auc=0.7024 val_acc=0.8250 best_auc=0.7695\n", " ep 90/504 [main:86/500] loss=0.2758 acc=0.8969 val_auc=0.7002 val_acc=0.8375 best_auc=0.7695\n", " ep 100/504 [main:96/500] loss=0.2590 acc=0.8812 val_auc=0.6926 val_acc=0.8250 best_auc=0.7695\n", " ep 110/504 [main:106/500] loss=0.2618 acc=0.8719 val_auc=0.6786 val_acc=0.8000 best_auc=0.7695\n", " ep 120/504 [main:116/500] loss=0.2554 acc=0.8844 val_auc=0.6634 val_acc=0.8000 best_auc=0.7695\n", " ep 130/504 [main:126/500] loss=0.2351 acc=0.9125 val_auc=0.6558 val_acc=0.8125 best_auc=0.7695\n", " ep 140/504 [main:136/500] loss=0.2428 acc=0.9000 val_auc=0.6580 val_acc=0.8000 best_auc=0.7695\n", " ep 150/504 [main:146/500] loss=0.2035 acc=0.9062 val_auc=0.6569 val_acc=0.8250 best_auc=0.7695\n", " ep 160/504 [main:156/500] loss=0.2083 acc=0.9250 val_auc=0.6580 val_acc=0.8125 best_auc=0.7695\n", " ep 170/504 [main:166/500] loss=0.2079 acc=0.9062 val_auc=0.6537 val_acc=0.7875 best_auc=0.7695\n", " ep 180/504 [main:176/500] loss=0.2097 acc=0.9062 val_auc=0.6667 val_acc=0.8125 best_auc=0.7695\n", " ep 190/504 [main:186/500] loss=0.2072 acc=0.9062 val_auc=0.6472 val_acc=0.8125 best_auc=0.7695\n", " ep 200/504 [main:196/500] loss=0.1776 acc=0.9281 val_auc=0.6580 val_acc=0.8000 best_auc=0.7695\n", " ep 210/504 [main:206/500] loss=0.1911 acc=0.9219 val_auc=0.6580 val_acc=0.7750 best_auc=0.7695\n", " ep 220/504 [main:216/500] loss=0.1770 acc=0.9313 val_auc=0.6634 val_acc=0.7750 best_auc=0.7695\n", " ep 230/504 [main:226/500] loss=0.1707 acc=0.9344 val_auc=0.6634 val_acc=0.8000 best_auc=0.7695\n", " ep 240/504 [main:236/500] loss=0.1632 acc=0.9375 val_auc=0.6461 val_acc=0.7875 best_auc=0.7695\n", " ep 250/504 [main:246/500] loss=0.1595 acc=0.9344 val_auc=0.6677 val_acc=0.8000 best_auc=0.7695\n", " ep 260/504 [main:256/500] loss=0.1478 acc=0.9375 val_auc=0.6602 val_acc=0.7875 best_auc=0.7695\n", " ep 270/504 [main:266/500] loss=0.1361 acc=0.9437 val_auc=0.6483 val_acc=0.7750 best_auc=0.7695\n", " ep 280/504 [main:276/500] loss=0.1370 acc=0.9531 val_auc=0.6418 val_acc=0.7500 best_auc=0.7695\n", " ep 290/504 [main:286/500] loss=0.1358 acc=0.9500 val_auc=0.6439 val_acc=0.7750 best_auc=0.7695\n", " ep 300/504 [main:296/500] loss=0.1243 acc=0.9563 val_auc=0.6353 val_acc=0.7750 best_auc=0.7695\n", " ep 310/504 [main:306/500] loss=0.1302 acc=0.9563 val_auc=0.6385 val_acc=0.7875 best_auc=0.7695\n", " ep 320/504 [main:316/500] loss=0.1251 acc=0.9469 val_auc=0.6310 val_acc=0.7375 best_auc=0.7695\n", " ep 330/504 [main:326/500] loss=0.1119 acc=0.9563 val_auc=0.6364 val_acc=0.7750 best_auc=0.7695\n", " ep 340/504 [main:336/500] loss=0.0943 acc=0.9688 val_auc=0.6212 val_acc=0.7750 best_auc=0.7695\n", " ep 350/504 [main:346/500] loss=0.1104 acc=0.9594 val_auc=0.6418 val_acc=0.7375 best_auc=0.7695\n", " ep 360/504 [main:356/500] loss=0.1088 acc=0.9563 val_auc=0.6201 val_acc=0.7000 best_auc=0.7695\n", " ep 370/504 [main:366/500] loss=0.0877 acc=0.9719 val_auc=0.6180 val_acc=0.7625 best_auc=0.7695\n", " ep 380/504 [main:376/500] loss=0.0964 acc=0.9688 val_auc=0.6223 val_acc=0.7375 best_auc=0.7695\n", " ep 390/504 [main:386/500] loss=0.0972 acc=0.9625 val_auc=0.6190 val_acc=0.7375 best_auc=0.7695\n", " ep 400/504 [main:396/500] loss=0.0975 acc=0.9563 val_auc=0.6299 val_acc=0.7500 best_auc=0.7695\n", " ep 410/504 [main:406/500] loss=0.0902 acc=0.9625 val_auc=0.6115 val_acc=0.7125 best_auc=0.7695\n", " ep 420/504 [main:416/500] loss=0.0731 acc=0.9688 val_auc=0.6126 val_acc=0.7125 best_auc=0.7695\n", " ep 430/504 [main:426/500] loss=0.0791 acc=0.9750 val_auc=0.5996 val_acc=0.7750 best_auc=0.7695\n", " ep 440/504 [main:436/500] loss=0.0731 acc=0.9781 val_auc=0.5996 val_acc=0.7500 best_auc=0.7695\n", " ep 450/504 [main:446/500] loss=0.0753 acc=0.9812 val_auc=0.6180 val_acc=0.7375 best_auc=0.7695\n", " ep 460/504 [main:456/500] loss=0.0847 acc=0.9656 val_auc=0.6126 val_acc=0.7500 best_auc=0.7695\n", " ep 470/504 [main:466/500] loss=0.0618 acc=0.9750 val_auc=0.6147 val_acc=0.7375 best_auc=0.7695\n", " ep 480/504 [main:476/500] loss=0.0658 acc=0.9781 val_auc=0.6028 val_acc=0.7125 best_auc=0.7695\n", " ep 490/504 [main:486/500] loss=0.0494 acc=0.9875 val_auc=0.6061 val_acc=0.7250 best_auc=0.7695\n", " ep 500/504 [main:496/500] loss=0.0715 acc=0.9750 val_auc=0.5963 val_acc=0.7500 best_auc=0.7695\n", " ep 504/504 [main:500/500] loss=0.0692 acc=0.9812 val_auc=0.6061 val_acc=0.7625 best_auc=0.7695\n", " [fold 1] best_epoch=25 best_auc=0.7695 val_auc=0.7695 val_acc=0.8375 hld_auc=0.5800 hld_acc=0.5000\n", "\n", "[fold 2/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.7256 acc=0.4313 val_auc=0.5357 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.4598 acc=0.8063 val_auc=0.6688 val_acc=0.8250 best_auc=0.6721\n", " ep 20/504 [main:16/500] loss=0.4094 acc=0.8156 val_auc=0.6634 val_acc=0.8250 best_auc=0.6721\n", " ep 30/504 [main:26/500] loss=0.3644 acc=0.8438 val_auc=0.6623 val_acc=0.8625 best_auc=0.6721\n", " ep 40/504 [main:36/500] loss=0.3282 acc=0.8625 val_auc=0.6764 val_acc=0.8500 best_auc=0.6764\n", " ep 50/504 [main:46/500] loss=0.3185 acc=0.8719 val_auc=0.6742 val_acc=0.8500 best_auc=0.6764\n", " ep 60/504 [main:56/500] loss=0.3162 acc=0.8656 val_auc=0.6797 val_acc=0.8625 best_auc=0.6807\n", " ep 70/504 [main:66/500] loss=0.3001 acc=0.8656 val_auc=0.6742 val_acc=0.8500 best_auc=0.6807\n", " ep 80/504 [main:76/500] loss=0.2770 acc=0.8781 val_auc=0.6677 val_acc=0.8500 best_auc=0.6807\n", " ep 90/504 [main:86/500] loss=0.2678 acc=0.8781 val_auc=0.6688 val_acc=0.8375 best_auc=0.6807\n", " ep 100/504 [main:96/500] loss=0.2680 acc=0.8844 val_auc=0.6710 val_acc=0.8375 best_auc=0.6807\n", " ep 110/504 [main:106/500] loss=0.2736 acc=0.8750 val_auc=0.6667 val_acc=0.8375 best_auc=0.6807\n", " ep 120/504 [main:116/500] loss=0.2497 acc=0.8969 val_auc=0.6634 val_acc=0.8375 best_auc=0.6807\n", " ep 130/504 [main:126/500] loss=0.2445 acc=0.8750 val_auc=0.6721 val_acc=0.8375 best_auc=0.6807\n", " ep 140/504 [main:136/500] loss=0.2386 acc=0.8875 val_auc=0.6721 val_acc=0.8500 best_auc=0.6807\n", " ep 150/504 [main:146/500] loss=0.2285 acc=0.9062 val_auc=0.6764 val_acc=0.8500 best_auc=0.6807\n", " ep 160/504 [main:156/500] loss=0.2232 acc=0.9000 val_auc=0.6775 val_acc=0.8500 best_auc=0.6807\n", " ep 170/504 [main:166/500] loss=0.2245 acc=0.8906 val_auc=0.6732 val_acc=0.8500 best_auc=0.6807\n", " ep 180/504 [main:176/500] loss=0.1975 acc=0.9187 val_auc=0.6753 val_acc=0.8375 best_auc=0.6807\n", " ep 190/504 [main:186/500] loss=0.2033 acc=0.9062 val_auc=0.6753 val_acc=0.8375 best_auc=0.6807\n", " ep 200/504 [main:196/500] loss=0.1839 acc=0.9313 val_auc=0.6710 val_acc=0.8375 best_auc=0.6807\n", " ep 210/504 [main:206/500] loss=0.1848 acc=0.9187 val_auc=0.6688 val_acc=0.8375 best_auc=0.6807\n", " ep 220/504 [main:216/500] loss=0.1744 acc=0.9187 val_auc=0.6645 val_acc=0.8375 best_auc=0.6807\n", " ep 230/504 [main:226/500] loss=0.1605 acc=0.9406 val_auc=0.6613 val_acc=0.8375 best_auc=0.6807\n", " ep 240/504 [main:236/500] loss=0.1716 acc=0.9250 val_auc=0.6602 val_acc=0.8375 best_auc=0.6807\n", " ep 250/504 [main:246/500] loss=0.1698 acc=0.9125 val_auc=0.6515 val_acc=0.8375 best_auc=0.6807\n", " ep 260/504 [main:256/500] loss=0.1620 acc=0.9375 val_auc=0.6569 val_acc=0.8375 best_auc=0.6807\n", " ep 270/504 [main:266/500] loss=0.1604 acc=0.9219 val_auc=0.6483 val_acc=0.8375 best_auc=0.6807\n", " ep 280/504 [main:276/500] loss=0.1346 acc=0.9406 val_auc=0.6504 val_acc=0.8375 best_auc=0.6807\n", " ep 290/504 [main:286/500] loss=0.1311 acc=0.9531 val_auc=0.6515 val_acc=0.8250 best_auc=0.6807\n", " ep 300/504 [main:296/500] loss=0.1297 acc=0.9500 val_auc=0.6504 val_acc=0.8500 best_auc=0.6807\n", " ep 310/504 [main:306/500] loss=0.1410 acc=0.9375 val_auc=0.6429 val_acc=0.8375 best_auc=0.6807\n", " ep 320/504 [main:316/500] loss=0.1262 acc=0.9437 val_auc=0.6407 val_acc=0.8500 best_auc=0.6807\n", " ep 330/504 [main:326/500] loss=0.1304 acc=0.9500 val_auc=0.6353 val_acc=0.8625 best_auc=0.6807\n", " ep 340/504 [main:336/500] loss=0.1197 acc=0.9469 val_auc=0.6439 val_acc=0.8625 best_auc=0.6807\n", " ep 350/504 [main:346/500] loss=0.1168 acc=0.9563 val_auc=0.6429 val_acc=0.8500 best_auc=0.6807\n", " ep 360/504 [main:356/500] loss=0.1068 acc=0.9625 val_auc=0.6450 val_acc=0.8500 best_auc=0.6807\n", " ep 370/504 [main:366/500] loss=0.1347 acc=0.9500 val_auc=0.6439 val_acc=0.8375 best_auc=0.6807\n", " ep 380/504 [main:376/500] loss=0.1246 acc=0.9469 val_auc=0.6418 val_acc=0.8500 best_auc=0.6807\n", " ep 390/504 [main:386/500] loss=0.1123 acc=0.9563 val_auc=0.6472 val_acc=0.8500 best_auc=0.6807\n", " ep 400/504 [main:396/500] loss=0.1113 acc=0.9406 val_auc=0.6385 val_acc=0.8250 best_auc=0.6807\n", " ep 410/504 [main:406/500] loss=0.1002 acc=0.9594 val_auc=0.6429 val_acc=0.8500 best_auc=0.6807\n", " ep 420/504 [main:416/500] loss=0.1043 acc=0.9563 val_auc=0.6342 val_acc=0.8375 best_auc=0.6807\n", " ep 430/504 [main:426/500] loss=0.0909 acc=0.9531 val_auc=0.6396 val_acc=0.8375 best_auc=0.6807\n", " ep 440/504 [main:436/500] loss=0.0894 acc=0.9719 val_auc=0.6418 val_acc=0.8375 best_auc=0.6807\n", " ep 450/504 [main:446/500] loss=0.0830 acc=0.9688 val_auc=0.6429 val_acc=0.8625 best_auc=0.6807\n", " ep 460/504 [main:456/500] loss=0.0782 acc=0.9656 val_auc=0.6439 val_acc=0.8250 best_auc=0.6807\n", " ep 470/504 [main:466/500] loss=0.0767 acc=0.9719 val_auc=0.6407 val_acc=0.8500 best_auc=0.6807\n", " ep 480/504 [main:476/500] loss=0.0894 acc=0.9563 val_auc=0.6353 val_acc=0.8375 best_auc=0.6807\n", " ep 490/504 [main:486/500] loss=0.0889 acc=0.9625 val_auc=0.6396 val_acc=0.8375 best_auc=0.6807\n", " ep 500/504 [main:496/500] loss=0.0913 acc=0.9594 val_auc=0.6245 val_acc=0.8250 best_auc=0.6807\n", " ep 504/504 [main:500/500] loss=0.0664 acc=0.9719 val_auc=0.6288 val_acc=0.8625 best_auc=0.6807\n", " [fold 2] best_epoch=56 best_auc=0.6807 val_auc=0.6807 val_acc=0.8500 hld_auc=0.6100 hld_acc=0.4500\n", "\n", "[fold 3/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.6534 acc=0.6250 val_auc=0.4286 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.4577 acc=0.8031 val_auc=0.6439 val_acc=0.8250 best_auc=0.6439\n", " ep 20/504 [main:16/500] loss=0.4206 acc=0.8063 val_auc=0.7024 val_acc=0.8625 best_auc=0.7024\n", " ep 30/504 [main:26/500] loss=0.3949 acc=0.8344 val_auc=0.7522 val_acc=0.8625 best_auc=0.7543\n", " ep 40/504 [main:36/500] loss=0.3668 acc=0.8469 val_auc=0.7760 val_acc=0.8750 best_auc=0.7814\n", " ep 50/504 [main:46/500] loss=0.3506 acc=0.8375 val_auc=0.7760 val_acc=0.8750 best_auc=0.7879\n", " ep 60/504 [main:56/500] loss=0.3239 acc=0.8531 val_auc=0.7630 val_acc=0.8750 best_auc=0.7879\n", " ep 70/504 [main:66/500] loss=0.3176 acc=0.8719 val_auc=0.7587 val_acc=0.8750 best_auc=0.7879\n", " ep 80/504 [main:76/500] loss=0.3041 acc=0.8656 val_auc=0.7413 val_acc=0.9000 best_auc=0.7879\n", " ep 90/504 [main:86/500] loss=0.2906 acc=0.8750 val_auc=0.7381 val_acc=0.8625 best_auc=0.7879\n", " ep 100/504 [main:96/500] loss=0.2860 acc=0.8688 val_auc=0.7262 val_acc=0.8500 best_auc=0.7879\n", " ep 110/504 [main:106/500] loss=0.2587 acc=0.8719 val_auc=0.7262 val_acc=0.8375 best_auc=0.7879\n", " ep 120/504 [main:116/500] loss=0.2615 acc=0.8781 val_auc=0.7056 val_acc=0.8375 best_auc=0.7879\n", " ep 130/504 [main:126/500] loss=0.2600 acc=0.8656 val_auc=0.7035 val_acc=0.8250 best_auc=0.7879\n", " ep 140/504 [main:136/500] loss=0.2261 acc=0.8969 val_auc=0.6883 val_acc=0.8250 best_auc=0.7879\n", " ep 150/504 [main:146/500] loss=0.2230 acc=0.9000 val_auc=0.6829 val_acc=0.7875 best_auc=0.7879\n", " ep 160/504 [main:156/500] loss=0.2128 acc=0.9219 val_auc=0.6753 val_acc=0.8000 best_auc=0.7879\n", " ep 170/504 [main:166/500] loss=0.2072 acc=0.9094 val_auc=0.6580 val_acc=0.7875 best_auc=0.7879\n", " ep 180/504 [main:176/500] loss=0.1991 acc=0.9313 val_auc=0.6645 val_acc=0.7750 best_auc=0.7879\n", " ep 190/504 [main:186/500] loss=0.1997 acc=0.9219 val_auc=0.6591 val_acc=0.7625 best_auc=0.7879\n", " ep 200/504 [main:196/500] loss=0.1934 acc=0.9219 val_auc=0.6580 val_acc=0.7375 best_auc=0.7879\n", " ep 210/504 [main:206/500] loss=0.1730 acc=0.9281 val_auc=0.6526 val_acc=0.7375 best_auc=0.7879\n", " ep 220/504 [main:216/500] loss=0.1534 acc=0.9250 val_auc=0.6558 val_acc=0.7375 best_auc=0.7879\n", " ep 230/504 [main:226/500] loss=0.1795 acc=0.9375 val_auc=0.6580 val_acc=0.7250 best_auc=0.7879\n", " ep 240/504 [main:236/500] loss=0.1619 acc=0.9344 val_auc=0.6439 val_acc=0.7625 best_auc=0.7879\n", " ep 250/504 [main:246/500] loss=0.1595 acc=0.9406 val_auc=0.6515 val_acc=0.7250 best_auc=0.7879\n", " ep 260/504 [main:256/500] loss=0.1561 acc=0.9375 val_auc=0.6515 val_acc=0.7500 best_auc=0.7879\n", " ep 270/504 [main:266/500] loss=0.1674 acc=0.9281 val_auc=0.6537 val_acc=0.7125 best_auc=0.7879\n", " ep 280/504 [main:276/500] loss=0.1298 acc=0.9469 val_auc=0.6558 val_acc=0.7500 best_auc=0.7879\n", " ep 290/504 [main:286/500] loss=0.1352 acc=0.9563 val_auc=0.6472 val_acc=0.7500 best_auc=0.7879\n", " ep 300/504 [main:296/500] loss=0.1253 acc=0.9563 val_auc=0.6461 val_acc=0.7375 best_auc=0.7879\n", " ep 310/504 [main:306/500] loss=0.1121 acc=0.9625 val_auc=0.6429 val_acc=0.7500 best_auc=0.7879\n", " ep 320/504 [main:316/500] loss=0.1128 acc=0.9563 val_auc=0.6429 val_acc=0.7000 best_auc=0.7879\n", " ep 330/504 [main:326/500] loss=0.1115 acc=0.9625 val_auc=0.6429 val_acc=0.7625 best_auc=0.7879\n", " ep 340/504 [main:336/500] loss=0.1242 acc=0.9500 val_auc=0.6450 val_acc=0.7500 best_auc=0.7879\n", " ep 350/504 [main:346/500] loss=0.1008 acc=0.9719 val_auc=0.6494 val_acc=0.7250 best_auc=0.7879\n", " ep 360/504 [main:356/500] loss=0.1121 acc=0.9563 val_auc=0.6569 val_acc=0.7625 best_auc=0.7879\n", " ep 370/504 [main:366/500] loss=0.1061 acc=0.9594 val_auc=0.6602 val_acc=0.7250 best_auc=0.7879\n", " ep 380/504 [main:376/500] loss=0.1133 acc=0.9563 val_auc=0.6558 val_acc=0.7250 best_auc=0.7879\n", " ep 390/504 [main:386/500] loss=0.0886 acc=0.9750 val_auc=0.6623 val_acc=0.7375 best_auc=0.7879\n", " ep 400/504 [main:396/500] loss=0.0989 acc=0.9563 val_auc=0.6613 val_acc=0.7250 best_auc=0.7879\n", " ep 410/504 [main:406/500] loss=0.1204 acc=0.9563 val_auc=0.6569 val_acc=0.7250 best_auc=0.7879\n", " ep 420/504 [main:416/500] loss=0.1132 acc=0.9563 val_auc=0.6602 val_acc=0.7000 best_auc=0.7879\n", " ep 430/504 [main:426/500] loss=0.0870 acc=0.9656 val_auc=0.6613 val_acc=0.7125 best_auc=0.7879\n", " ep 440/504 [main:436/500] loss=0.0937 acc=0.9688 val_auc=0.6656 val_acc=0.7375 best_auc=0.7879\n", " ep 450/504 [main:446/500] loss=0.0969 acc=0.9563 val_auc=0.6504 val_acc=0.7250 best_auc=0.7879\n", " ep 460/504 [main:456/500] loss=0.0871 acc=0.9781 val_auc=0.6656 val_acc=0.7125 best_auc=0.7879\n", " ep 470/504 [main:466/500] loss=0.0841 acc=0.9625 val_auc=0.6677 val_acc=0.7250 best_auc=0.7879\n", " ep 480/504 [main:476/500] loss=0.0877 acc=0.9656 val_auc=0.6645 val_acc=0.7125 best_auc=0.7879\n", " ep 490/504 [main:486/500] loss=0.0833 acc=0.9656 val_auc=0.6580 val_acc=0.7250 best_auc=0.7879\n", " ep 500/504 [main:496/500] loss=0.0871 acc=0.9688 val_auc=0.6645 val_acc=0.7375 best_auc=0.7879\n", " ep 504/504 [main:500/500] loss=0.0844 acc=0.9656 val_auc=0.6645 val_acc=0.7250 best_auc=0.7879\n", " [fold 3] best_epoch=42 best_auc=0.7879 val_auc=0.7879 val_acc=0.8750 hld_auc=0.6700 hld_acc=0.4500\n", "\n", "[fold 4/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.5378 acc=0.8063 val_auc=0.3301 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.4214 acc=0.8063 val_auc=0.3658 val_acc=0.8250 best_auc=0.3658\n", " ep 20/504 [main:16/500] loss=0.3523 acc=0.8594 val_auc=0.4232 val_acc=0.7625 best_auc=0.4232\n", " ep 30/504 [main:26/500] loss=0.3032 acc=0.8750 val_auc=0.4946 val_acc=0.7625 best_auc=0.4946\n", " ep 40/504 [main:36/500] loss=0.2875 acc=0.8906 val_auc=0.5152 val_acc=0.7500 best_auc=0.5152\n", " ep 50/504 [main:46/500] loss=0.2790 acc=0.8812 val_auc=0.5227 val_acc=0.7750 best_auc=0.5303\n", " ep 60/504 [main:56/500] loss=0.2722 acc=0.8844 val_auc=0.5260 val_acc=0.7500 best_auc=0.5314\n", " ep 70/504 [main:66/500] loss=0.2452 acc=0.9125 val_auc=0.5173 val_acc=0.7625 best_auc=0.5314\n", " ep 80/504 [main:76/500] loss=0.2439 acc=0.9156 val_auc=0.5162 val_acc=0.7625 best_auc=0.5314\n", " ep 90/504 [main:86/500] loss=0.2424 acc=0.8938 val_auc=0.5195 val_acc=0.7625 best_auc=0.5314\n", " ep 100/504 [main:96/500] loss=0.2347 acc=0.9031 val_auc=0.5162 val_acc=0.7750 best_auc=0.5314\n", " ep 110/504 [main:106/500] loss=0.2403 acc=0.8906 val_auc=0.5119 val_acc=0.7625 best_auc=0.5314\n", " ep 120/504 [main:116/500] loss=0.2184 acc=0.9125 val_auc=0.5087 val_acc=0.7625 best_auc=0.5314\n", " ep 130/504 [main:126/500] loss=0.2160 acc=0.9031 val_auc=0.5206 val_acc=0.7750 best_auc=0.5314\n", " ep 140/504 [main:136/500] loss=0.2003 acc=0.9094 val_auc=0.5011 val_acc=0.7625 best_auc=0.5314\n", " ep 150/504 [main:146/500] loss=0.2094 acc=0.9000 val_auc=0.5108 val_acc=0.7625 best_auc=0.5314\n", " ep 160/504 [main:156/500] loss=0.1967 acc=0.9062 val_auc=0.5032 val_acc=0.7750 best_auc=0.5314\n", " ep 170/504 [main:166/500] loss=0.1905 acc=0.9062 val_auc=0.5097 val_acc=0.7750 best_auc=0.5314\n", " ep 180/504 [main:176/500] loss=0.1785 acc=0.9281 val_auc=0.5043 val_acc=0.7250 best_auc=0.5314\n", " ep 190/504 [main:186/500] loss=0.1782 acc=0.9094 val_auc=0.5108 val_acc=0.7750 best_auc=0.5314\n", " ep 200/504 [main:196/500] loss=0.1686 acc=0.9156 val_auc=0.5043 val_acc=0.7750 best_auc=0.5314\n", " ep 210/504 [main:206/500] loss=0.1469 acc=0.9344 val_auc=0.5054 val_acc=0.7750 best_auc=0.5314\n", " ep 220/504 [main:216/500] loss=0.1436 acc=0.9344 val_auc=0.5032 val_acc=0.7875 best_auc=0.5314\n", " ep 230/504 [main:226/500] loss=0.1544 acc=0.9437 val_auc=0.5065 val_acc=0.7875 best_auc=0.5314\n", " ep 240/504 [main:236/500] loss=0.1363 acc=0.9313 val_auc=0.5087 val_acc=0.7625 best_auc=0.5314\n", " ep 250/504 [main:246/500] loss=0.1370 acc=0.9437 val_auc=0.5141 val_acc=0.7500 best_auc=0.5314\n", " ep 260/504 [main:256/500] loss=0.1400 acc=0.9563 val_auc=0.5022 val_acc=0.7750 best_auc=0.5314\n", " ep 270/504 [main:266/500] loss=0.1316 acc=0.9437 val_auc=0.5173 val_acc=0.7125 best_auc=0.5314\n", " ep 280/504 [main:276/500] loss=0.1117 acc=0.9594 val_auc=0.5076 val_acc=0.7750 best_auc=0.5314\n", " ep 290/504 [main:286/500] loss=0.1195 acc=0.9531 val_auc=0.4935 val_acc=0.7750 best_auc=0.5314\n", " ep 300/504 [main:296/500] loss=0.1080 acc=0.9563 val_auc=0.4978 val_acc=0.7375 best_auc=0.5314\n", " ep 310/504 [main:306/500] loss=0.1071 acc=0.9500 val_auc=0.4968 val_acc=0.7125 best_auc=0.5314\n", " ep 320/504 [main:316/500] loss=0.1209 acc=0.9531 val_auc=0.4946 val_acc=0.7625 best_auc=0.5314\n", " ep 330/504 [main:326/500] loss=0.1129 acc=0.9531 val_auc=0.4968 val_acc=0.7250 best_auc=0.5314\n", " ep 340/504 [main:336/500] loss=0.0910 acc=0.9688 val_auc=0.4816 val_acc=0.7500 best_auc=0.5314\n", " ep 350/504 [main:346/500] loss=0.0859 acc=0.9656 val_auc=0.4870 val_acc=0.7375 best_auc=0.5314\n", " ep 360/504 [main:356/500] loss=0.0775 acc=0.9750 val_auc=0.4751 val_acc=0.7375 best_auc=0.5314\n", " ep 370/504 [main:366/500] loss=0.0841 acc=0.9688 val_auc=0.4751 val_acc=0.7375 best_auc=0.5314\n", " ep 380/504 [main:376/500] loss=0.0810 acc=0.9750 val_auc=0.4848 val_acc=0.7250 best_auc=0.5314\n", " ep 390/504 [main:386/500] loss=0.0836 acc=0.9688 val_auc=0.4805 val_acc=0.7375 best_auc=0.5314\n", " ep 400/504 [main:396/500] loss=0.0762 acc=0.9719 val_auc=0.4827 val_acc=0.7375 best_auc=0.5314\n", " ep 410/504 [main:406/500] loss=0.0866 acc=0.9688 val_auc=0.4762 val_acc=0.7500 best_auc=0.5314\n", " ep 420/504 [main:416/500] loss=0.0701 acc=0.9875 val_auc=0.4827 val_acc=0.7375 best_auc=0.5314\n", " ep 430/504 [main:426/500] loss=0.0635 acc=0.9812 val_auc=0.4762 val_acc=0.7250 best_auc=0.5314\n", " ep 440/504 [main:436/500] loss=0.0687 acc=0.9688 val_auc=0.4740 val_acc=0.7250 best_auc=0.5314\n", " ep 450/504 [main:446/500] loss=0.0687 acc=0.9781 val_auc=0.4838 val_acc=0.7250 best_auc=0.5314\n", " ep 460/504 [main:456/500] loss=0.0567 acc=0.9844 val_auc=0.4827 val_acc=0.7250 best_auc=0.5314\n", " ep 470/504 [main:466/500] loss=0.0613 acc=0.9781 val_auc=0.4946 val_acc=0.7125 best_auc=0.5314\n", " ep 480/504 [main:476/500] loss=0.0456 acc=0.9844 val_auc=0.4665 val_acc=0.7375 best_auc=0.5314\n", " ep 490/504 [main:486/500] loss=0.0465 acc=0.9906 val_auc=0.4859 val_acc=0.7000 best_auc=0.5314\n", " ep 500/504 [main:496/500] loss=0.0414 acc=0.9938 val_auc=0.4794 val_acc=0.7500 best_auc=0.5314\n", " ep 504/504 [main:500/500] loss=0.0397 acc=0.9906 val_auc=0.4773 val_acc=0.7125 best_auc=0.5314\n", " [fold 4] best_epoch=57 best_auc=0.5314 val_auc=0.5314 val_acc=0.7500 hld_auc=0.7400 hld_acc=0.4000\n", "\n", "[fold 5/5] eye_train_n=320 bilat_val_n=40 holdout_n=10 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.6734 acc=0.5531 val_auc=0.5942 val_acc=0.8250 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.4503 acc=0.8125 val_auc=0.7370 val_acc=0.8250 best_auc=0.7370\n", " ep 20/504 [main:16/500] loss=0.4079 acc=0.8344 val_auc=0.7781 val_acc=0.8250 best_auc=0.7781\n", " ep 30/504 [main:26/500] loss=0.3555 acc=0.8719 val_auc=0.8019 val_acc=0.8250 best_auc=0.8074\n", " ep 40/504 [main:36/500] loss=0.3245 acc=0.8812 val_auc=0.8009 val_acc=0.8125 best_auc=0.8074\n", " ep 50/504 [main:46/500] loss=0.3142 acc=0.8781 val_auc=0.7987 val_acc=0.8125 best_auc=0.8074\n", " ep 60/504 [main:56/500] loss=0.2917 acc=0.8812 val_auc=0.7803 val_acc=0.8000 best_auc=0.8074\n", " ep 70/504 [main:66/500] loss=0.2938 acc=0.8812 val_auc=0.7792 val_acc=0.7750 best_auc=0.8074\n", " ep 80/504 [main:76/500] loss=0.2675 acc=0.8844 val_auc=0.7760 val_acc=0.7875 best_auc=0.8074\n", " ep 90/504 [main:86/500] loss=0.2620 acc=0.8969 val_auc=0.7716 val_acc=0.8000 best_auc=0.8074\n", " ep 100/504 [main:96/500] loss=0.2648 acc=0.8781 val_auc=0.7792 val_acc=0.7750 best_auc=0.8074\n", " ep 110/504 [main:106/500] loss=0.2317 acc=0.9156 val_auc=0.7792 val_acc=0.7750 best_auc=0.8074\n", " ep 120/504 [main:116/500] loss=0.2226 acc=0.9094 val_auc=0.7695 val_acc=0.7750 best_auc=0.8074\n", " ep 130/504 [main:126/500] loss=0.2327 acc=0.8906 val_auc=0.7760 val_acc=0.8000 best_auc=0.8074\n", " ep 140/504 [main:136/500] loss=0.2320 acc=0.9031 val_auc=0.7781 val_acc=0.8125 best_auc=0.8074\n", " ep 150/504 [main:146/500] loss=0.2259 acc=0.9156 val_auc=0.7825 val_acc=0.8125 best_auc=0.8074\n", " ep 160/504 [main:156/500] loss=0.2252 acc=0.8969 val_auc=0.7857 val_acc=0.8125 best_auc=0.8074\n", " ep 170/504 [main:166/500] loss=0.1966 acc=0.9187 val_auc=0.7857 val_acc=0.8250 best_auc=0.8074\n", " ep 180/504 [main:176/500] loss=0.1943 acc=0.9094 val_auc=0.7911 val_acc=0.8125 best_auc=0.8074\n", " ep 190/504 [main:186/500] loss=0.1909 acc=0.9094 val_auc=0.7944 val_acc=0.8125 best_auc=0.8074\n", " ep 200/504 [main:196/500] loss=0.1899 acc=0.9094 val_auc=0.8052 val_acc=0.8250 best_auc=0.8074\n", " ep 210/504 [main:206/500] loss=0.1915 acc=0.9094 val_auc=0.8009 val_acc=0.8250 best_auc=0.8095\n", " ep 220/504 [main:216/500] loss=0.1731 acc=0.9156 val_auc=0.8052 val_acc=0.8375 best_auc=0.8095\n", " ep 230/504 [main:226/500] loss=0.1677 acc=0.9281 val_auc=0.8041 val_acc=0.8250 best_auc=0.8095\n", " ep 240/504 [main:236/500] loss=0.1686 acc=0.9281 val_auc=0.8063 val_acc=0.8250 best_auc=0.8149\n", " ep 250/504 [main:246/500] loss=0.1683 acc=0.9219 val_auc=0.8063 val_acc=0.8500 best_auc=0.8236\n", " ep 260/504 [main:256/500] loss=0.1530 acc=0.9281 val_auc=0.8052 val_acc=0.8375 best_auc=0.8268\n", " ep 270/504 [main:266/500] loss=0.1231 acc=0.9437 val_auc=0.8225 val_acc=0.8375 best_auc=0.8268\n", " ep 280/504 [main:276/500] loss=0.1554 acc=0.9219 val_auc=0.8171 val_acc=0.8250 best_auc=0.8268\n", " ep 290/504 [main:286/500] loss=0.1502 acc=0.9187 val_auc=0.8084 val_acc=0.8500 best_auc=0.8268\n", " ep 300/504 [main:296/500] loss=0.1384 acc=0.9375 val_auc=0.8149 val_acc=0.8250 best_auc=0.8268\n", " ep 310/504 [main:306/500] loss=0.1393 acc=0.9281 val_auc=0.8203 val_acc=0.8500 best_auc=0.8268\n", " ep 320/504 [main:316/500] loss=0.1231 acc=0.9375 val_auc=0.8214 val_acc=0.8625 best_auc=0.8268\n", " ep 330/504 [main:326/500] loss=0.1403 acc=0.9344 val_auc=0.8160 val_acc=0.8500 best_auc=0.8268\n", " ep 340/504 [main:336/500] loss=0.1216 acc=0.9437 val_auc=0.8258 val_acc=0.8625 best_auc=0.8333\n", " ep 350/504 [main:346/500] loss=0.1018 acc=0.9594 val_auc=0.8258 val_acc=0.8625 best_auc=0.8344\n", " ep 360/504 [main:356/500] loss=0.1260 acc=0.9437 val_auc=0.8258 val_acc=0.8625 best_auc=0.8344\n", " ep 370/504 [main:366/500] loss=0.1208 acc=0.9500 val_auc=0.8182 val_acc=0.8500 best_auc=0.8344\n", " ep 380/504 [main:376/500] loss=0.1138 acc=0.9375 val_auc=0.8258 val_acc=0.8750 best_auc=0.8398\n", " ep 390/504 [main:386/500] loss=0.1108 acc=0.9437 val_auc=0.8323 val_acc=0.8625 best_auc=0.8398\n", " ep 400/504 [main:396/500] loss=0.0919 acc=0.9594 val_auc=0.8333 val_acc=0.8750 best_auc=0.8398\n", " ep 410/504 [main:406/500] loss=0.0875 acc=0.9563 val_auc=0.8301 val_acc=0.8750 best_auc=0.8398\n", " ep 420/504 [main:416/500] loss=0.1114 acc=0.9594 val_auc=0.8225 val_acc=0.8625 best_auc=0.8398\n", " ep 430/504 [main:426/500] loss=0.0835 acc=0.9688 val_auc=0.8344 val_acc=0.8625 best_auc=0.8398\n", " ep 440/504 [main:436/500] loss=0.0936 acc=0.9594 val_auc=0.8279 val_acc=0.8625 best_auc=0.8398\n", " ep 450/504 [main:446/500] loss=0.0799 acc=0.9719 val_auc=0.8333 val_acc=0.8750 best_auc=0.8398\n", " ep 460/504 [main:456/500] loss=0.1025 acc=0.9500 val_auc=0.8323 val_acc=0.8750 best_auc=0.8431\n", " ep 470/504 [main:466/500] loss=0.0959 acc=0.9531 val_auc=0.8355 val_acc=0.8625 best_auc=0.8431\n", " ep 480/504 [main:476/500] loss=0.0975 acc=0.9625 val_auc=0.8409 val_acc=0.8750 best_auc=0.8431\n", " ep 490/504 [main:486/500] loss=0.0651 acc=0.9781 val_auc=0.8312 val_acc=0.8625 best_auc=0.8431\n", " ep 500/504 [main:496/500] loss=0.0785 acc=0.9656 val_auc=0.8312 val_acc=0.8625 best_auc=0.8431\n", " ep 504/504 [main:500/500] loss=0.0821 acc=0.9750 val_auc=0.8279 val_acc=0.8625 best_auc=0.8431\n", " [fold 5] best_epoch=455 best_auc=0.8431 val_auc=0.8431 val_acc=0.8750 hld_auc=0.6600 hld_acc=0.4500\n", "\n", "Mean val AUC: 0.7225 ± 0.1089\n", "Mean hld AUC: 0.6520 ± 0.0549\n", "\n", "Outputs written to: analysis_data/pipeline_mdonly_500ep/binary/single\n", "[mdonly] Running pipeline_mdonly_500ep/multiclass (500 epochs) ...\n", "Device: cuda\n", "Loading PAPILA data...\n", "Loaded: 488 rows feature_dim=25\n", "[multiclass] rows=488\n", "\n", "[fold 1/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.9215 acc=0.7049 val_auc=0.6492 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.7160 acc=0.7104 val_auc=0.7519 val_acc=0.7174 best_auc=0.7612\n", " ep 20/504 [main:16/500] loss=0.6363 acc=0.7377 val_auc=0.7535 val_acc=0.7065 best_auc=0.7612\n", " ep 30/504 [main:26/500] loss=0.5719 acc=0.7842 val_auc=0.7438 val_acc=0.7174 best_auc=0.7612\n", " ep 40/504 [main:36/500] loss=0.5291 acc=0.8087 val_auc=0.7310 val_acc=0.7174 best_auc=0.7612\n", " ep 50/504 [main:46/500] loss=0.4794 acc=0.8306 val_auc=0.7027 val_acc=0.7283 best_auc=0.7612\n", " ep 60/504 [main:56/500] loss=0.4759 acc=0.8197 val_auc=0.6771 val_acc=0.7391 best_auc=0.7612\n", " ep 70/504 [main:66/500] loss=0.4396 acc=0.8470 val_auc=0.6640 val_acc=0.7283 best_auc=0.7612\n", " ep 80/504 [main:76/500] loss=0.4274 acc=0.8525 val_auc=0.6494 val_acc=0.7283 best_auc=0.7612\n", " ep 90/504 [main:86/500] loss=0.4066 acc=0.8661 val_auc=0.6401 val_acc=0.7500 best_auc=0.7612\n", " ep 100/504 [main:96/500] loss=0.4050 acc=0.8388 val_auc=0.6270 val_acc=0.7391 best_auc=0.7612\n", " ep 110/504 [main:106/500] loss=0.3956 acc=0.8497 val_auc=0.6195 val_acc=0.7283 best_auc=0.7612\n", " ep 120/504 [main:116/500] loss=0.3786 acc=0.8634 val_auc=0.6193 val_acc=0.7391 best_auc=0.7612\n", " ep 130/504 [main:126/500] loss=0.3701 acc=0.8579 val_auc=0.6133 val_acc=0.7283 best_auc=0.7612\n", " ep 140/504 [main:136/500] loss=0.3573 acc=0.8661 val_auc=0.6060 val_acc=0.7391 best_auc=0.7612\n", " ep 150/504 [main:146/500] loss=0.3531 acc=0.8716 val_auc=0.6042 val_acc=0.7283 best_auc=0.7612\n", " ep 160/504 [main:156/500] loss=0.3431 acc=0.8743 val_auc=0.6029 val_acc=0.7391 best_auc=0.7612\n", " ep 170/504 [main:166/500] loss=0.3346 acc=0.8852 val_auc=0.5953 val_acc=0.7391 best_auc=0.7612\n", " ep 180/504 [main:176/500] loss=0.3195 acc=0.8852 val_auc=0.5861 val_acc=0.7174 best_auc=0.7612\n", " ep 190/504 [main:186/500] loss=0.3279 acc=0.8661 val_auc=0.5845 val_acc=0.7174 best_auc=0.7612\n", " ep 200/504 [main:196/500] loss=0.3326 acc=0.8661 val_auc=0.5792 val_acc=0.7283 best_auc=0.7612\n", " ep 210/504 [main:206/500] loss=0.3045 acc=0.8798 val_auc=0.5748 val_acc=0.7174 best_auc=0.7612\n", " ep 220/504 [main:216/500] loss=0.3011 acc=0.8825 val_auc=0.5764 val_acc=0.7174 best_auc=0.7612\n", " ep 230/504 [main:226/500] loss=0.2854 acc=0.8852 val_auc=0.5655 val_acc=0.7174 best_auc=0.7612\n", " ep 240/504 [main:236/500] loss=0.2766 acc=0.8962 val_auc=0.5708 val_acc=0.7174 best_auc=0.7612\n", " ep 250/504 [main:246/500] loss=0.2684 acc=0.8989 val_auc=0.5659 val_acc=0.7174 best_auc=0.7612\n", " ep 260/504 [main:256/500] loss=0.2610 acc=0.8962 val_auc=0.5534 val_acc=0.7283 best_auc=0.7612\n", " ep 270/504 [main:266/500] loss=0.2725 acc=0.8880 val_auc=0.5561 val_acc=0.7065 best_auc=0.7612\n", " ep 280/504 [main:276/500] loss=0.2527 acc=0.8880 val_auc=0.5483 val_acc=0.7174 best_auc=0.7612\n", " ep 290/504 [main:286/500] loss=0.2422 acc=0.9126 val_auc=0.5457 val_acc=0.7065 best_auc=0.7612\n", " ep 300/504 [main:296/500] loss=0.2480 acc=0.9126 val_auc=0.5401 val_acc=0.7065 best_auc=0.7612\n", " ep 310/504 [main:306/500] loss=0.2340 acc=0.9044 val_auc=0.5406 val_acc=0.7065 best_auc=0.7612\n", " ep 320/504 [main:316/500] loss=0.2156 acc=0.9153 val_auc=0.5332 val_acc=0.7065 best_auc=0.7612\n", " ep 330/504 [main:326/500] loss=0.2290 acc=0.8934 val_auc=0.5304 val_acc=0.7065 best_auc=0.7612\n", " ep 340/504 [main:336/500] loss=0.2156 acc=0.9153 val_auc=0.5363 val_acc=0.7065 best_auc=0.7612\n", " ep 350/504 [main:346/500] loss=0.2104 acc=0.9044 val_auc=0.5327 val_acc=0.7065 best_auc=0.7612\n", " ep 360/504 [main:356/500] loss=0.2064 acc=0.9126 val_auc=0.5262 val_acc=0.7065 best_auc=0.7612\n", " ep 370/504 [main:366/500] loss=0.2095 acc=0.9180 val_auc=0.5261 val_acc=0.7174 best_auc=0.7612\n", " ep 380/504 [main:376/500] loss=0.1801 acc=0.9426 val_auc=0.5126 val_acc=0.7174 best_auc=0.7612\n", " ep 390/504 [main:386/500] loss=0.1865 acc=0.9344 val_auc=0.5110 val_acc=0.7283 best_auc=0.7612\n", " ep 400/504 [main:396/500] loss=0.1663 acc=0.9235 val_auc=0.5116 val_acc=0.7065 best_auc=0.7612\n", " ep 410/504 [main:406/500] loss=0.1589 acc=0.9344 val_auc=0.5284 val_acc=0.7174 best_auc=0.7612\n", " ep 420/504 [main:416/500] loss=0.1581 acc=0.9536 val_auc=0.5151 val_acc=0.7174 best_auc=0.7612\n", " ep 430/504 [main:426/500] loss=0.1549 acc=0.9399 val_auc=0.5273 val_acc=0.7174 best_auc=0.7612\n", " ep 440/504 [main:436/500] loss=0.1678 acc=0.9454 val_auc=0.5279 val_acc=0.7174 best_auc=0.7612\n", " ep 450/504 [main:446/500] loss=0.1410 acc=0.9481 val_auc=0.5175 val_acc=0.6739 best_auc=0.7612\n", " ep 460/504 [main:456/500] loss=0.1528 acc=0.9372 val_auc=0.5226 val_acc=0.7065 best_auc=0.7612\n", " ep 470/504 [main:466/500] loss=0.1308 acc=0.9563 val_auc=0.5242 val_acc=0.6957 best_auc=0.7612\n", " ep 480/504 [main:476/500] loss=0.1311 acc=0.9508 val_auc=0.5244 val_acc=0.7174 best_auc=0.7612\n", " ep 490/504 [main:486/500] loss=0.1145 acc=0.9645 val_auc=0.5182 val_acc=0.6739 best_auc=0.7612\n", " ep 500/504 [main:496/500] loss=0.0890 acc=0.9727 val_auc=0.5182 val_acc=0.7065 best_auc=0.7612\n", " ep 504/504 [main:500/500] loss=0.1108 acc=0.9727 val_auc=0.5200 val_acc=0.7174 best_auc=0.7612\n", " [fold 1] best_epoch=5 best_auc=0.7612 val_auc=0.7612 val_acc=0.7174 hld_auc=0.4217 hld_acc=0.3333\n", "\n", "[fold 2/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.9624 acc=0.6721 val_auc=0.5366 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.7376 acc=0.7049 val_auc=0.6939 val_acc=0.7174 best_auc=0.6939\n", " ep 20/504 [main:16/500] loss=0.6507 acc=0.7295 val_auc=0.7239 val_acc=0.7065 best_auc=0.7239\n", " ep 30/504 [main:26/500] loss=0.5697 acc=0.7842 val_auc=0.7498 val_acc=0.7717 best_auc=0.7522\n", " ep 40/504 [main:36/500] loss=0.5314 acc=0.8033 val_auc=0.7299 val_acc=0.7609 best_auc=0.7522\n", " ep 50/504 [main:46/500] loss=0.4951 acc=0.8169 val_auc=0.7157 val_acc=0.7500 best_auc=0.7522\n", " ep 60/504 [main:56/500] loss=0.4643 acc=0.8224 val_auc=0.6968 val_acc=0.7391 best_auc=0.7522\n", " ep 70/504 [main:66/500] loss=0.4479 acc=0.8333 val_auc=0.6926 val_acc=0.7174 best_auc=0.7522\n", " ep 80/504 [main:76/500] loss=0.4424 acc=0.8251 val_auc=0.6814 val_acc=0.7065 best_auc=0.7522\n", " ep 90/504 [main:86/500] loss=0.4110 acc=0.8388 val_auc=0.6776 val_acc=0.7283 best_auc=0.7522\n", " ep 100/504 [main:96/500] loss=0.4008 acc=0.8306 val_auc=0.6733 val_acc=0.7174 best_auc=0.7522\n", " ep 110/504 [main:106/500] loss=0.3988 acc=0.8388 val_auc=0.6679 val_acc=0.7065 best_auc=0.7522\n", " ep 120/504 [main:116/500] loss=0.3983 acc=0.8306 val_auc=0.6661 val_acc=0.7065 best_auc=0.7522\n", " ep 130/504 [main:126/500] loss=0.3710 acc=0.8470 val_auc=0.6615 val_acc=0.6957 best_auc=0.7522\n", " ep 140/504 [main:136/500] loss=0.3580 acc=0.8443 val_auc=0.6600 val_acc=0.6739 best_auc=0.7522\n", " ep 150/504 [main:146/500] loss=0.3498 acc=0.8497 val_auc=0.6580 val_acc=0.6739 best_auc=0.7522\n", " ep 160/504 [main:156/500] loss=0.3452 acc=0.8415 val_auc=0.6569 val_acc=0.6630 best_auc=0.7522\n", " ep 170/504 [main:166/500] loss=0.3311 acc=0.8525 val_auc=0.6563 val_acc=0.6739 best_auc=0.7522\n", " ep 180/504 [main:176/500] loss=0.3102 acc=0.8770 val_auc=0.6543 val_acc=0.6630 best_auc=0.7522\n", " ep 190/504 [main:186/500] loss=0.3131 acc=0.8716 val_auc=0.6510 val_acc=0.6739 best_auc=0.7522\n", " ep 200/504 [main:196/500] loss=0.3036 acc=0.8607 val_auc=0.6490 val_acc=0.6630 best_auc=0.7522\n", " ep 210/504 [main:206/500] loss=0.2808 acc=0.8852 val_auc=0.6493 val_acc=0.6630 best_auc=0.7522\n", " ep 220/504 [main:216/500] loss=0.2997 acc=0.8852 val_auc=0.6455 val_acc=0.6739 best_auc=0.7522\n", " ep 230/504 [main:226/500] loss=0.2681 acc=0.8989 val_auc=0.6439 val_acc=0.6630 best_auc=0.7522\n", " ep 240/504 [main:236/500] loss=0.2829 acc=0.8880 val_auc=0.6451 val_acc=0.6630 best_auc=0.7522\n", " ep 250/504 [main:246/500] loss=0.2570 acc=0.8934 val_auc=0.6488 val_acc=0.6739 best_auc=0.7522\n", " ep 260/504 [main:256/500] loss=0.2392 acc=0.9126 val_auc=0.6434 val_acc=0.6739 best_auc=0.7522\n", " ep 270/504 [main:266/500] loss=0.2259 acc=0.9153 val_auc=0.6412 val_acc=0.6630 best_auc=0.7522\n", " ep 280/504 [main:276/500] loss=0.2178 acc=0.9262 val_auc=0.6401 val_acc=0.6739 best_auc=0.7522\n", " ep 290/504 [main:286/500] loss=0.2115 acc=0.9153 val_auc=0.6329 val_acc=0.6630 best_auc=0.7522\n", " ep 300/504 [main:296/500] loss=0.2220 acc=0.9126 val_auc=0.6320 val_acc=0.6739 best_auc=0.7522\n", " ep 310/504 [main:306/500] loss=0.1950 acc=0.9399 val_auc=0.6288 val_acc=0.6739 best_auc=0.7522\n", " ep 320/504 [main:316/500] loss=0.1868 acc=0.9235 val_auc=0.6274 val_acc=0.6522 best_auc=0.7522\n", " ep 330/504 [main:326/500] loss=0.1938 acc=0.9098 val_auc=0.6297 val_acc=0.6630 best_auc=0.7522\n", " ep 340/504 [main:336/500] loss=0.1616 acc=0.9399 val_auc=0.6315 val_acc=0.6087 best_auc=0.7522\n", " ep 350/504 [main:346/500] loss=0.1782 acc=0.9235 val_auc=0.6319 val_acc=0.6304 best_auc=0.7522\n", " ep 360/504 [main:356/500] loss=0.1569 acc=0.9344 val_auc=0.6338 val_acc=0.6522 best_auc=0.7522\n", " ep 370/504 [main:366/500] loss=0.1678 acc=0.9372 val_auc=0.6351 val_acc=0.6413 best_auc=0.7522\n", " ep 380/504 [main:376/500] loss=0.1608 acc=0.9399 val_auc=0.6298 val_acc=0.6413 best_auc=0.7522\n", " ep 390/504 [main:386/500] loss=0.1453 acc=0.9481 val_auc=0.6346 val_acc=0.6304 best_auc=0.7522\n", " ep 400/504 [main:396/500] loss=0.1470 acc=0.9454 val_auc=0.6346 val_acc=0.6413 best_auc=0.7522\n", " ep 410/504 [main:406/500] loss=0.1417 acc=0.9372 val_auc=0.6361 val_acc=0.6304 best_auc=0.7522\n", " ep 420/504 [main:416/500] loss=0.1373 acc=0.9426 val_auc=0.6316 val_acc=0.6522 best_auc=0.7522\n", " ep 430/504 [main:426/500] loss=0.1212 acc=0.9645 val_auc=0.6313 val_acc=0.6522 best_auc=0.7522\n", " ep 440/504 [main:436/500] loss=0.1078 acc=0.9563 val_auc=0.6287 val_acc=0.6196 best_auc=0.7522\n", " ep 450/504 [main:446/500] loss=0.1216 acc=0.9699 val_auc=0.6252 val_acc=0.6196 best_auc=0.7522\n", " ep 460/504 [main:456/500] loss=0.1041 acc=0.9617 val_auc=0.6286 val_acc=0.6413 best_auc=0.7522\n", " ep 470/504 [main:466/500] loss=0.0972 acc=0.9645 val_auc=0.6218 val_acc=0.6413 best_auc=0.7522\n", " ep 480/504 [main:476/500] loss=0.1342 acc=0.9508 val_auc=0.6245 val_acc=0.6413 best_auc=0.7522\n", " ep 490/504 [main:486/500] loss=0.1023 acc=0.9699 val_auc=0.6297 val_acc=0.6413 best_auc=0.7522\n", " ep 500/504 [main:496/500] loss=0.0934 acc=0.9727 val_auc=0.6310 val_acc=0.6522 best_auc=0.7522\n", " ep 504/504 [main:500/500] loss=0.0896 acc=0.9699 val_auc=0.6307 val_acc=0.6413 best_auc=0.7522\n", " [fold 2] best_epoch=29 best_auc=0.7522 val_auc=0.7522 val_acc=0.7717 hld_auc=0.5900 hld_acc=0.3333\n", "\n", "[fold 3/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.9942 acc=0.5956 val_auc=0.5834 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.7359 acc=0.7077 val_auc=0.7530 val_acc=0.7174 best_auc=0.7530\n", " ep 20/504 [main:16/500] loss=0.6673 acc=0.7322 val_auc=0.7966 val_acc=0.7717 best_auc=0.7966\n", " ep 30/504 [main:26/500] loss=0.6178 acc=0.7650 val_auc=0.8366 val_acc=0.7935 best_auc=0.8366\n", " ep 40/504 [main:36/500] loss=0.5630 acc=0.7951 val_auc=0.8396 val_acc=0.8043 best_auc=0.8407\n", " ep 50/504 [main:46/500] loss=0.5594 acc=0.7978 val_auc=0.8427 val_acc=0.8043 best_auc=0.8458\n", " ep 60/504 [main:56/500] loss=0.5420 acc=0.7869 val_auc=0.8387 val_acc=0.8261 best_auc=0.8466\n", " ep 70/504 [main:66/500] loss=0.5171 acc=0.8115 val_auc=0.8365 val_acc=0.8152 best_auc=0.8466\n", " ep 80/504 [main:76/500] loss=0.5024 acc=0.8060 val_auc=0.8262 val_acc=0.8152 best_auc=0.8466\n", " ep 90/504 [main:86/500] loss=0.4852 acc=0.8033 val_auc=0.8173 val_acc=0.8152 best_auc=0.8466\n", " ep 100/504 [main:96/500] loss=0.4730 acc=0.8251 val_auc=0.8046 val_acc=0.8152 best_auc=0.8466\n", " ep 110/504 [main:106/500] loss=0.4734 acc=0.8169 val_auc=0.7961 val_acc=0.8043 best_auc=0.8466\n", " ep 120/504 [main:116/500] loss=0.4423 acc=0.8361 val_auc=0.7803 val_acc=0.8043 best_auc=0.8466\n", " ep 130/504 [main:126/500] loss=0.4228 acc=0.8415 val_auc=0.7731 val_acc=0.8043 best_auc=0.8466\n", " ep 140/504 [main:136/500] loss=0.4146 acc=0.8388 val_auc=0.7670 val_acc=0.8043 best_auc=0.8466\n", " ep 150/504 [main:146/500] loss=0.3869 acc=0.8579 val_auc=0.7587 val_acc=0.8043 best_auc=0.8466\n", " ep 160/504 [main:156/500] loss=0.3799 acc=0.8579 val_auc=0.7486 val_acc=0.8152 best_auc=0.8466\n", " ep 170/504 [main:166/500] loss=0.3849 acc=0.8552 val_auc=0.7422 val_acc=0.8043 best_auc=0.8466\n", " ep 180/504 [main:176/500] loss=0.3588 acc=0.8634 val_auc=0.7394 val_acc=0.8152 best_auc=0.8466\n", " ep 190/504 [main:186/500] loss=0.3496 acc=0.8579 val_auc=0.7343 val_acc=0.8261 best_auc=0.8466\n", " ep 200/504 [main:196/500] loss=0.3522 acc=0.8525 val_auc=0.7245 val_acc=0.7826 best_auc=0.8466\n", " ep 210/504 [main:206/500] loss=0.3327 acc=0.8661 val_auc=0.7217 val_acc=0.8043 best_auc=0.8466\n", " ep 220/504 [main:216/500] loss=0.3175 acc=0.8716 val_auc=0.7171 val_acc=0.8043 best_auc=0.8466\n", " ep 230/504 [main:226/500] loss=0.3294 acc=0.8743 val_auc=0.7114 val_acc=0.7935 best_auc=0.8466\n", " ep 240/504 [main:236/500] loss=0.2960 acc=0.8880 val_auc=0.7132 val_acc=0.8043 best_auc=0.8466\n", " ep 250/504 [main:246/500] loss=0.2996 acc=0.8880 val_auc=0.7080 val_acc=0.7717 best_auc=0.8466\n", " ep 260/504 [main:256/500] loss=0.2997 acc=0.8825 val_auc=0.7119 val_acc=0.7826 best_auc=0.8466\n", " ep 270/504 [main:266/500] loss=0.2923 acc=0.8825 val_auc=0.7001 val_acc=0.7826 best_auc=0.8466\n", " ep 280/504 [main:276/500] loss=0.2886 acc=0.8825 val_auc=0.7042 val_acc=0.7826 best_auc=0.8466\n", " ep 290/504 [main:286/500] loss=0.2652 acc=0.8907 val_auc=0.6993 val_acc=0.7826 best_auc=0.8466\n", " ep 300/504 [main:296/500] loss=0.2682 acc=0.8989 val_auc=0.7064 val_acc=0.7826 best_auc=0.8466\n", " ep 310/504 [main:306/500] loss=0.2579 acc=0.8989 val_auc=0.7036 val_acc=0.7935 best_auc=0.8466\n", " ep 320/504 [main:316/500] loss=0.2387 acc=0.9153 val_auc=0.7010 val_acc=0.7500 best_auc=0.8466\n", " ep 330/504 [main:326/500] loss=0.2406 acc=0.9098 val_auc=0.7041 val_acc=0.7935 best_auc=0.8466\n", " ep 340/504 [main:336/500] loss=0.2474 acc=0.9071 val_auc=0.7018 val_acc=0.7609 best_auc=0.8466\n", " ep 350/504 [main:346/500] loss=0.2461 acc=0.8962 val_auc=0.7004 val_acc=0.7609 best_auc=0.8466\n", " ep 360/504 [main:356/500] loss=0.2299 acc=0.9208 val_auc=0.6975 val_acc=0.7826 best_auc=0.8466\n", " ep 370/504 [main:366/500] loss=0.2234 acc=0.9153 val_auc=0.6891 val_acc=0.7500 best_auc=0.8466\n", " ep 380/504 [main:376/500] loss=0.2100 acc=0.9317 val_auc=0.6974 val_acc=0.7500 best_auc=0.8466\n", " ep 390/504 [main:386/500] loss=0.2164 acc=0.9262 val_auc=0.6938 val_acc=0.7283 best_auc=0.8466\n", " ep 400/504 [main:396/500] loss=0.2023 acc=0.9290 val_auc=0.6920 val_acc=0.7391 best_auc=0.8466\n", " ep 410/504 [main:406/500] loss=0.1914 acc=0.9399 val_auc=0.6946 val_acc=0.7391 best_auc=0.8466\n", " ep 420/504 [main:416/500] loss=0.2001 acc=0.9290 val_auc=0.6918 val_acc=0.7283 best_auc=0.8466\n", " ep 430/504 [main:426/500] loss=0.1834 acc=0.9317 val_auc=0.6855 val_acc=0.7283 best_auc=0.8466\n", " ep 440/504 [main:436/500] loss=0.2023 acc=0.9153 val_auc=0.6842 val_acc=0.7065 best_auc=0.8466\n", " ep 450/504 [main:446/500] loss=0.1758 acc=0.9426 val_auc=0.6848 val_acc=0.7065 best_auc=0.8466\n", " ep 460/504 [main:456/500] loss=0.1636 acc=0.9399 val_auc=0.6908 val_acc=0.7065 best_auc=0.8466\n", " ep 470/504 [main:466/500] loss=0.1525 acc=0.9481 val_auc=0.6868 val_acc=0.6848 best_auc=0.8466\n", " ep 480/504 [main:476/500] loss=0.1488 acc=0.9344 val_auc=0.6875 val_acc=0.7283 best_auc=0.8466\n", " ep 490/504 [main:486/500] loss=0.1462 acc=0.9426 val_auc=0.6818 val_acc=0.6848 best_auc=0.8466\n", " ep 500/504 [main:496/500] loss=0.1621 acc=0.9481 val_auc=0.6844 val_acc=0.7174 best_auc=0.8466\n", " ep 504/504 [main:500/500] loss=0.1561 acc=0.9481 val_auc=0.6859 val_acc=0.6957 best_auc=0.8466\n", " [fold 3] best_epoch=52 best_auc=0.8466 val_auc=0.8466 val_acc=0.8152 hld_auc=0.5300 hld_acc=0.3000\n", "\n", "[fold 4/5] eye_train_n=366 bilat_val_n=46 holdout_n=15 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.9263 acc=0.7022 val_auc=0.4937 val_acc=0.7174 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.7090 acc=0.7022 val_auc=0.5485 val_acc=0.7174 best_auc=0.5485\n", " ep 20/504 [main:16/500] loss=0.6209 acc=0.7350 val_auc=0.5841 val_acc=0.7174 best_auc=0.5841\n", " ep 30/504 [main:26/500] loss=0.5670 acc=0.7787 val_auc=0.5881 val_acc=0.7174 best_auc=0.5918\n", " ep 40/504 [main:36/500] loss=0.5227 acc=0.7951 val_auc=0.5876 val_acc=0.6957 best_auc=0.5918\n", " ep 50/504 [main:46/500] loss=0.4999 acc=0.8169 val_auc=0.5869 val_acc=0.7065 best_auc=0.5951\n", " ep 60/504 [main:56/500] loss=0.4622 acc=0.8333 val_auc=0.5905 val_acc=0.6848 best_auc=0.5951\n", " ep 70/504 [main:66/500] loss=0.4405 acc=0.8251 val_auc=0.5930 val_acc=0.7174 best_auc=0.5951\n", " ep 80/504 [main:76/500] loss=0.4187 acc=0.8279 val_auc=0.5944 val_acc=0.7174 best_auc=0.5980\n", " ep 90/504 [main:86/500] loss=0.4120 acc=0.8443 val_auc=0.5898 val_acc=0.7065 best_auc=0.5980\n", " ep 100/504 [main:96/500] loss=0.3934 acc=0.8579 val_auc=0.5832 val_acc=0.7065 best_auc=0.5980\n", " ep 110/504 [main:106/500] loss=0.3703 acc=0.8470 val_auc=0.5780 val_acc=0.7065 best_auc=0.5980\n", " ep 120/504 [main:116/500] loss=0.3747 acc=0.8579 val_auc=0.5814 val_acc=0.7065 best_auc=0.5980\n", " ep 130/504 [main:126/500] loss=0.3643 acc=0.8579 val_auc=0.5863 val_acc=0.7174 best_auc=0.5980\n", " ep 140/504 [main:136/500] loss=0.3418 acc=0.8689 val_auc=0.5781 val_acc=0.7065 best_auc=0.5980\n", " ep 150/504 [main:146/500] loss=0.3294 acc=0.8716 val_auc=0.5809 val_acc=0.6957 best_auc=0.5980\n", " ep 160/504 [main:156/500] loss=0.3113 acc=0.8934 val_auc=0.5796 val_acc=0.6957 best_auc=0.5980\n", " ep 170/504 [main:166/500] loss=0.3111 acc=0.8825 val_auc=0.5838 val_acc=0.6957 best_auc=0.5980\n", " ep 180/504 [main:176/500] loss=0.3026 acc=0.8770 val_auc=0.5840 val_acc=0.7065 best_auc=0.5980\n", " ep 190/504 [main:186/500] loss=0.2942 acc=0.8825 val_auc=0.5855 val_acc=0.6957 best_auc=0.5980\n", " ep 200/504 [main:196/500] loss=0.2700 acc=0.8962 val_auc=0.5753 val_acc=0.6848 best_auc=0.5980\n", " ep 210/504 [main:206/500] loss=0.2723 acc=0.9016 val_auc=0.5829 val_acc=0.6848 best_auc=0.5980\n", " ep 220/504 [main:216/500] loss=0.2520 acc=0.8989 val_auc=0.5813 val_acc=0.6413 best_auc=0.5980\n", " ep 230/504 [main:226/500] loss=0.2502 acc=0.9098 val_auc=0.5774 val_acc=0.6739 best_auc=0.5980\n", " ep 240/504 [main:236/500] loss=0.2340 acc=0.9153 val_auc=0.5777 val_acc=0.6848 best_auc=0.5980\n", " ep 250/504 [main:246/500] loss=0.2309 acc=0.9208 val_auc=0.5846 val_acc=0.6522 best_auc=0.5980\n", " ep 260/504 [main:256/500] loss=0.2169 acc=0.9262 val_auc=0.5777 val_acc=0.6957 best_auc=0.5980\n", " ep 270/504 [main:266/500] loss=0.2173 acc=0.9126 val_auc=0.5770 val_acc=0.6739 best_auc=0.5980\n", " ep 280/504 [main:276/500] loss=0.2385 acc=0.9071 val_auc=0.5795 val_acc=0.5978 best_auc=0.5980\n", " ep 290/504 [main:286/500] loss=0.1978 acc=0.9344 val_auc=0.5835 val_acc=0.6413 best_auc=0.5980\n", " ep 300/504 [main:296/500] loss=0.1871 acc=0.9399 val_auc=0.5743 val_acc=0.6304 best_auc=0.5980\n", " ep 310/504 [main:306/500] loss=0.1795 acc=0.9262 val_auc=0.5727 val_acc=0.6413 best_auc=0.5980\n", " ep 320/504 [main:316/500] loss=0.2026 acc=0.9317 val_auc=0.5793 val_acc=0.6304 best_auc=0.5980\n", " ep 330/504 [main:326/500] loss=0.1872 acc=0.9399 val_auc=0.5738 val_acc=0.6413 best_auc=0.5980\n", " ep 340/504 [main:336/500] loss=0.1557 acc=0.9508 val_auc=0.5789 val_acc=0.6087 best_auc=0.5980\n", " ep 350/504 [main:346/500] loss=0.1651 acc=0.9399 val_auc=0.5721 val_acc=0.6087 best_auc=0.5980\n", " ep 360/504 [main:356/500] loss=0.1541 acc=0.9426 val_auc=0.5621 val_acc=0.5978 best_auc=0.5980\n", " ep 370/504 [main:366/500] loss=0.1471 acc=0.9454 val_auc=0.5646 val_acc=0.5978 best_auc=0.5980\n", " ep 380/504 [main:376/500] loss=0.1504 acc=0.9399 val_auc=0.5730 val_acc=0.5978 best_auc=0.5980\n", " ep 390/504 [main:386/500] loss=0.1352 acc=0.9536 val_auc=0.5678 val_acc=0.6413 best_auc=0.5980\n", " ep 400/504 [main:396/500] loss=0.1181 acc=0.9699 val_auc=0.5708 val_acc=0.6413 best_auc=0.5980\n", " ep 410/504 [main:406/500] loss=0.1159 acc=0.9672 val_auc=0.5617 val_acc=0.6196 best_auc=0.5980\n", " ep 420/504 [main:416/500] loss=0.1304 acc=0.9508 val_auc=0.5720 val_acc=0.5978 best_auc=0.5980\n", " ep 430/504 [main:426/500] loss=0.1162 acc=0.9563 val_auc=0.5632 val_acc=0.6087 best_auc=0.5980\n", " ep 440/504 [main:436/500] loss=0.1008 acc=0.9536 val_auc=0.5614 val_acc=0.5978 best_auc=0.5980\n", " ep 450/504 [main:446/500] loss=0.1151 acc=0.9754 val_auc=0.5696 val_acc=0.6196 best_auc=0.5980\n", " ep 460/504 [main:456/500] loss=0.0882 acc=0.9809 val_auc=0.5773 val_acc=0.6087 best_auc=0.5980\n", " ep 470/504 [main:466/500] loss=0.1068 acc=0.9590 val_auc=0.5711 val_acc=0.6196 best_auc=0.5980\n", " ep 480/504 [main:476/500] loss=0.1064 acc=0.9590 val_auc=0.5726 val_acc=0.6196 best_auc=0.5980\n", " ep 490/504 [main:486/500] loss=0.0925 acc=0.9727 val_auc=0.5686 val_acc=0.6196 best_auc=0.5980\n", " ep 500/504 [main:496/500] loss=0.0986 acc=0.9645 val_auc=0.5714 val_acc=0.6196 best_auc=0.5980\n", " ep 504/504 [main:500/500] loss=0.1001 acc=0.9754 val_auc=0.5751 val_acc=0.6196 best_auc=0.5980\n", " [fold 4] best_epoch=74 best_auc=0.5980 val_auc=0.5980 val_acc=0.7174 hld_auc=0.6783 hld_acc=0.3000\n", "\n", "[fold 5/5] eye_train_n=368 bilat_val_n=45 holdout_n=15 warmup=2+2 total=504\n", " ep 1/504 [tower_warmup:0/500] loss=0.9110 acc=0.6929 val_auc=0.4903 val_acc=0.7333 best_auc=-1.0000\n", " ep 10/504 [main:6/500] loss=0.7646 acc=0.7011 val_auc=0.7379 val_acc=0.7333 best_auc=0.7379\n", " ep 20/504 [main:16/500] loss=0.6818 acc=0.7283 val_auc=0.7677 val_acc=0.7444 best_auc=0.7680\n", " ep 30/504 [main:26/500] loss=0.5958 acc=0.7663 val_auc=0.7708 val_acc=0.7333 best_auc=0.7783\n", " ep 40/504 [main:36/500] loss=0.5383 acc=0.7908 val_auc=0.7837 val_acc=0.7444 best_auc=0.7852\n", " ep 50/504 [main:46/500] loss=0.4943 acc=0.8125 val_auc=0.7984 val_acc=0.7111 best_auc=0.7984\n", " ep 60/504 [main:56/500] loss=0.4816 acc=0.8234 val_auc=0.8015 val_acc=0.7222 best_auc=0.8070\n", " ep 70/504 [main:66/500] loss=0.4628 acc=0.8370 val_auc=0.8054 val_acc=0.7000 best_auc=0.8103\n", " ep 80/504 [main:76/500] loss=0.4294 acc=0.8342 val_auc=0.8076 val_acc=0.7000 best_auc=0.8103\n", " ep 90/504 [main:86/500] loss=0.4198 acc=0.8397 val_auc=0.8042 val_acc=0.7000 best_auc=0.8103\n", " ep 100/504 [main:96/500] loss=0.4225 acc=0.8424 val_auc=0.7966 val_acc=0.6889 best_auc=0.8103\n", " ep 110/504 [main:106/500] loss=0.4208 acc=0.8342 val_auc=0.7988 val_acc=0.6889 best_auc=0.8103\n", " ep 120/504 [main:116/500] loss=0.3832 acc=0.8478 val_auc=0.7966 val_acc=0.6889 best_auc=0.8103\n", " ep 130/504 [main:126/500] loss=0.3805 acc=0.8587 val_auc=0.7879 val_acc=0.7000 best_auc=0.8103\n", " ep 140/504 [main:136/500] loss=0.3604 acc=0.8424 val_auc=0.7863 val_acc=0.6778 best_auc=0.8103\n", " ep 150/504 [main:146/500] loss=0.3313 acc=0.8723 val_auc=0.7856 val_acc=0.7000 best_auc=0.8103\n", " ep 160/504 [main:156/500] loss=0.3314 acc=0.8750 val_auc=0.7857 val_acc=0.7000 best_auc=0.8103\n", " ep 170/504 [main:166/500] loss=0.3405 acc=0.8777 val_auc=0.7839 val_acc=0.7000 best_auc=0.8103\n", " ep 180/504 [main:176/500] loss=0.3582 acc=0.8505 val_auc=0.7854 val_acc=0.7000 best_auc=0.8103\n", " ep 190/504 [main:186/500] loss=0.3103 acc=0.8777 val_auc=0.7822 val_acc=0.7000 best_auc=0.8103\n", " ep 200/504 [main:196/500] loss=0.2994 acc=0.8886 val_auc=0.7761 val_acc=0.7222 best_auc=0.8103\n", " ep 210/504 [main:206/500] loss=0.2969 acc=0.8859 val_auc=0.7793 val_acc=0.7222 best_auc=0.8103\n", " ep 220/504 [main:216/500] loss=0.2788 acc=0.8913 val_auc=0.7755 val_acc=0.7000 best_auc=0.8103\n", " ep 230/504 [main:226/500] loss=0.2874 acc=0.8804 val_auc=0.7733 val_acc=0.7111 best_auc=0.8103\n", " ep 240/504 [main:236/500] loss=0.2574 acc=0.9076 val_auc=0.7760 val_acc=0.6889 best_auc=0.8103\n", " ep 250/504 [main:246/500] loss=0.2697 acc=0.8967 val_auc=0.7737 val_acc=0.7000 best_auc=0.8103\n", " ep 260/504 [main:256/500] loss=0.2682 acc=0.9049 val_auc=0.7709 val_acc=0.7222 best_auc=0.8103\n", " ep 270/504 [main:266/500] loss=0.2398 acc=0.9022 val_auc=0.7692 val_acc=0.7111 best_auc=0.8103\n", " ep 280/504 [main:276/500] loss=0.2477 acc=0.9049 val_auc=0.7709 val_acc=0.6889 best_auc=0.8103\n", " ep 290/504 [main:286/500] loss=0.2506 acc=0.9022 val_auc=0.7665 val_acc=0.7222 best_auc=0.8103\n", " ep 300/504 [main:296/500] loss=0.2285 acc=0.9185 val_auc=0.7680 val_acc=0.7111 best_auc=0.8103\n", " ep 310/504 [main:306/500] loss=0.2376 acc=0.9185 val_auc=0.7659 val_acc=0.7222 best_auc=0.8103\n", " ep 320/504 [main:316/500] loss=0.2240 acc=0.9158 val_auc=0.7648 val_acc=0.7222 best_auc=0.8103\n", " ep 330/504 [main:326/500] loss=0.1924 acc=0.9266 val_auc=0.7632 val_acc=0.7000 best_auc=0.8103\n", " ep 340/504 [main:336/500] loss=0.2174 acc=0.9076 val_auc=0.7617 val_acc=0.7222 best_auc=0.8103\n", " ep 350/504 [main:346/500] loss=0.1754 acc=0.9429 val_auc=0.7573 val_acc=0.7333 best_auc=0.8103\n", " ep 360/504 [main:356/500] loss=0.1857 acc=0.9293 val_auc=0.7600 val_acc=0.7333 best_auc=0.8103\n", " ep 370/504 [main:366/500] loss=0.1852 acc=0.9130 val_auc=0.7615 val_acc=0.7222 best_auc=0.8103\n", " ep 380/504 [main:376/500] loss=0.1660 acc=0.9429 val_auc=0.7626 val_acc=0.7333 best_auc=0.8103\n", " ep 390/504 [main:386/500] loss=0.1639 acc=0.9321 val_auc=0.7628 val_acc=0.7000 best_auc=0.8103\n", " ep 400/504 [main:396/500] loss=0.1589 acc=0.9429 val_auc=0.7623 val_acc=0.7111 best_auc=0.8103\n", " ep 410/504 [main:406/500] loss=0.1600 acc=0.9484 val_auc=0.7651 val_acc=0.7000 best_auc=0.8103\n", " ep 420/504 [main:416/500] loss=0.1434 acc=0.9484 val_auc=0.7647 val_acc=0.7111 best_auc=0.8103\n", " ep 430/504 [main:426/500] loss=0.1414 acc=0.9457 val_auc=0.7676 val_acc=0.7222 best_auc=0.8103\n", " ep 440/504 [main:436/500] loss=0.1378 acc=0.9538 val_auc=0.7602 val_acc=0.7222 best_auc=0.8103\n", " ep 450/504 [main:446/500] loss=0.1386 acc=0.9457 val_auc=0.7565 val_acc=0.7000 best_auc=0.8103\n", " ep 460/504 [main:456/500] loss=0.1107 acc=0.9701 val_auc=0.7645 val_acc=0.7111 best_auc=0.8103\n", " ep 470/504 [main:466/500] loss=0.1240 acc=0.9592 val_auc=0.7626 val_acc=0.7111 best_auc=0.8103\n", " ep 480/504 [main:476/500] loss=0.1124 acc=0.9647 val_auc=0.7644 val_acc=0.7111 best_auc=0.8103\n", " ep 490/504 [main:486/500] loss=0.1132 acc=0.9592 val_auc=0.7603 val_acc=0.7111 best_auc=0.8103\n", " ep 500/504 [main:496/500] loss=0.1063 acc=0.9701 val_auc=0.7666 val_acc=0.7000 best_auc=0.8103\n", " ep 504/504 [main:500/500] loss=0.1095 acc=0.9565 val_auc=0.7591 val_acc=0.7000 best_auc=0.8103\n", " [fold 5] best_epoch=63 best_auc=0.8103 val_auc=0.8103 val_acc=0.7000 hld_auc=0.5750 hld_acc=0.2667\n", "\n", "Mean val AUC: 0.7537 ± 0.0850\n", "Mean hld AUC: 0.5590 ± 0.0839\n", "\n", "Outputs written to: analysis_data/pipeline_mdonly_500ep/multiclass/single\n" ] } ], "source": [ "import subprocess\n", "from pathlib import Path\n", "\n", "RUNS = [\n", " (\"pipeline_mdonly_50ep\", 50),\n", " (\"pipeline_mdonly_200ep\", 200),\n", " (\"pipeline_mdonly_500ep\", 500),\n", "]\n", "EVAL_MODES = [\"binary\", \"multiclass\"]\n", "\n", "for run_name, epochs in RUNS:\n", " for eval_mode in EVAL_MODES:\n", " tm_dir = Path(\"analysis_data\") / run_name / eval_mode / \"single\"\n", " if (tm_dir / \"summary.json\").exists():\n", " print(f\"[mdonly] {run_name}/{eval_mode} already complete — skipping.\")\n", " continue\n", " print(f\"[mdonly] Running {run_name}/{eval_mode} ({epochs} epochs) ...\")\n", " subprocess.run([\n", " \"python\", \"scripts/main/v2/run_md_mlp.py\",\n", " \"--run-name\", run_name,\n", " \"--eval-mode\", eval_mode,\n", " \"--tower-mode\", \"single\",\n", " \"--epochs\", str(epochs),\n", " \"--n-splits\", \"5\",\n", " ], check=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5) Run Pipeline Experiments\n", "\n", "Runs `single` + `ensemble` (with fused head) across `binary` and `multiclass` for three crop strategies. \n", "Outputs land under `analysis_data/pipeline_{nocrop,gt,unet}/`.\n", "\n", "Each cell can be run independently; expect ~2–4 hours per crop mode on GPU." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# 3a) No crop — original full-size images\n", "!python scripts/basic_analysis/compare_hypertower_modes.py \\\n", " --tower-modes single ensemble \\\n", " --eval-modes binary multiclass \\\n", " --epochs 40 --n-splits 5 \\\n", " --backbone refugelike \\\n", " --img-crop-manifest analysis_data/unet_manifest.csv \\\n", " --warmup-md-epochs 50 \\\n", " --fused-head \\\n", " --run-name pipeline_nocrop" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# 3b) GT crop — expert segmentation masks crop the optic disc region\n", "!python scripts/basic_analysis/compare_hypertower_modes.py \\\n", " --tower-modes single ensemble \\\n", " --eval-modes binary multiclass \\\n", " --epochs 40 --n-splits 5 \\\n", " --backbone refugelike \\\n", " --img-crop-gt \\\n", " --warmup-md-epochs 50 \\\n", " --fused-head \\\n", " --run-name pipeline_gt" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# 3c) UNet crop — trained segmenter crops the optic disc region\n", "!python scripts/basic_analysis/compare_hypertower_modes.py \\\n", " --tower-modes single ensemble \\\n", " --eval-modes binary multiclass \\\n", " --epochs 40 --n-splits 5 \\\n", " --backbone refugelike \\\n", " --img-crop-manifest analysis_data/unet_manifest.csv \\\n", " --img-crop-weights models/v2/refuge/segmentation/per_image/best.pt \\\n", " --img-crop-normalize per_image \\\n", " --img-crop-cache analysis_data/v2_crops_unet_refuge \\\n", " --warmup-md-epochs 50 \\\n", " --fused-head \\\n", " --run-name pipeline_unet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6) Visualizations\n", "\n", "ROC curves, probability strips (binary), and probability triangles (multiclass) for all runs and modes. \n", "Outputs written to `{run_dir}/{eval_mode}/{tower_mode}/plots/`." ] }, { "cell_type": "code", "execution_count": null, "id": "7yrcfu0bv1w", "metadata": {}, "outputs": [], "source": [ "import subprocess\n", "from pathlib import Path\n", "\n", "RUN_DIRS = {\n", " \"nocrop\": Path(\"analysis_data/pipeline_nocrop\"),\n", " \"gt\": Path(\"analysis_data/pipeline_gt\"),\n", " \"unet\": Path(\"analysis_data/pipeline_unet\"),\n", "}\n", "EVAL_MODES = [\"binary\", \"multiclass\"]\n", "TOWER_MODES = [\"single\", \"ensemble\"]\n", "\n", "for run_name, run_dir in RUN_DIRS.items():\n", " for eval_mode in EVAL_MODES:\n", " for tower_mode in TOWER_MODES:\n", " mode_dir = run_dir / eval_mode / tower_mode\n", " if not mode_dir.exists():\n", " print(f\" skip (not found): {mode_dir}\")\n", " continue\n", " print(f\"--- {run_name} / {eval_mode} / {tower_mode} ---\")\n", "\n", " # ROC curves\n", " subprocess.run([\n", " \"python\", \"scripts/output_analysis/visualizations/plot_run_roc_v2.py\",\n", " \"--run-dir\", str(run_dir),\n", " \"--eval-mode\", eval_mode,\n", " \"--tower-mode\", tower_mode,\n", " ], check=True)\n", "\n", " # Probability strips — binary only\n", " if eval_mode == \"binary\":\n", " subprocess.run([\n", " \"python\", \"scripts/output_analysis/visualizations/plot_prob_strips.py\",\n", " \"--run-dir\", str(mode_dir),\n", " \"--head\", \"fused\", \"--style\", \"strips\",\n", " ], check=True)\n", "\n", " # Probability triangle-3D — multiclass only\n", " if eval_mode == \"multiclass\":\n", " subprocess.run([\n", " \"python\", \"scripts/output_analysis/visualizations/plot_prob_strips.py\",\n", " \"--run-dir\", str(mode_dir),\n", " \"--head\", \"fused\", \"--style\", \"triangle3d\",\n", " ], check=True)" ] }, { "cell_type": "markdown", "id": "pnkme10a6ig", "metadata": {}, "source": [ "## 7) Explainability\n", "\n", "MD feature importance (Phase 1), GradCAM heatmaps (Phase 2), and fusion event analysis (Phase 3). \n", "Phase 3 is disk-based (no re-inference); Phases 1 & 2 reload the model per fold. \n", "Skip phases with `--no-phase1`, `--no-phase2`, or `--no-phase3`." ] }, { "cell_type": "code", "execution_count": null, "id": "6f40ybd1k5n", "metadata": {}, "outputs": [], "source": [ "import subprocess\n", "from pathlib import Path\n", "\n", "RUN_DIRS = {\n", " \"nocrop\": Path(\"analysis_data/pipeline_nocrop\"),\n", " \"gt\": Path(\"analysis_data/pipeline_gt\"),\n", " \"unet\": Path(\"analysis_data/pipeline_unet\"),\n", "}\n", "EVAL_MODES = [\"binary\", \"multiclass\"]\n", "TOWER_MODES = [\"single\", \"ensemble\"]\n", "\n", "for run_name, run_dir in RUN_DIRS.items():\n", " for eval_mode in EVAL_MODES:\n", " for tower_mode in TOWER_MODES:\n", " run_dir_path = run_dir / eval_mode / tower_mode\n", " if not run_dir_path.exists():\n", " print(f\" skip (not found): {run_dir_path}\")\n", " continue\n", " print(f\"--- {run_name} / {eval_mode} / {tower_mode} ---\")\n", " subprocess.run([\n", " \"python\", \"scripts/output_analysis/explainability/explain_run.py\",\n", " \"--run-dir\", str(run_dir_path),\n", " \"--n-splits\", \"5\",\n", " ], check=True)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.12" } }, "nbformat": 4, "nbformat_minor": 5 }