Files
hypertower/scripts/main/pipeline.ipynb
T
rpotter6298 786457b30d update 3-19
2026-03-19 11:18:58 +01:00

1406 lines
112 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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,
"id": "6a600aed",
"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",
"id": "d1ea8b19",
"metadata": {},
"source": [
"## 1) Build UNet Manifest"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "b07b3e69",
"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",
"id": "dgglybgo5wg",
"source": "## 2) Build Refugelike Backbone\n\nThe `refugelike` backbone is a ResNet-50 pre-trained on REFUGE as an optic disc/cup classifier, then stripped of its classification head and used as a frozen or partially-frozen feature extractor in the HyperTower image tower.\n\n**Steps:**\n1. Train the REFUGE classifier (`--train-clf`)\n2. Export its backbone weights to `models/v2/refuge/refugelike_backbone.pt` (`--export-backbone`)\n\nThe classifier checkpoint is saved to `models/v2/refuge/classifier/resnet50/refuge_classifier_best.pt` by default. \nThe exported backbone is what `--backbone refugelike` loads at runtime (see `classes/v2/backbones.py`).",
"metadata": {}
},
{
"cell_type": "code",
"id": "b7jt033ul4v",
"source": "BACKBONE_PATH = \"models/v2/refuge/refugelike_backbone.pt\"\n\n# Step 1: train the REFUGE classifier (ResNet-50, 30 epochs by default)\n!python3 scripts/main/refuge/refuge_build.py \\\n --train-clf \\\n --manifest manifest.csv \\\n --device cuda\n\n# Step 2: strip the head and export backbone weights\n!python3 scripts/main/refuge/refuge_build.py \\\n --export-backbone {BACKBONE_PATH} \\\n --manifest manifest.csv \\\n --device cuda",
"metadata": {},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"id": "8df524a2",
"metadata": {},
"source": "## 2b) Train UNet Segmenter (per-image normalization)\n\nCurrent 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,
"id": "be2b499a",
"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 <module>\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",
"id": "a2a3bd04",
"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 ~24 hours per crop mode on GPU."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e395f268",
"metadata": {},
"outputs": [],
"source": [
"# 3a) No crop — original full-size images\n",
"!python scripts/main/v2/multirun_hypertower.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,
"id": "125f35c6",
"metadata": {},
"outputs": [],
"source": "# 3b) GT crop — expert segmentation masks crop the optic disc region\n!python scripts/main/v2/multirun_hypertower.py \\\n --tower-modes single ensemble \\\n --eval-modes binary multiclass \\\n --epochs 40 --n-splits 5 \\\n --backbone refugelike \\\n --img-crop-manifest manifest.csv \\\n --img-crop-gt \\\n --warmup-md-epochs 50 \\\n --fused-head \\\n --run-name pipeline_gt"
},
{
"cell_type": "code",
"execution_count": null,
"id": "83df73ac",
"metadata": {},
"outputs": [],
"source": "# 3c) UNet crop — trained segmenter crops the optic disc region\n!python scripts/main/v2/multirun_hypertower.py \\\n --tower-modes single ensemble \\\n --eval-modes binary multiclass \\\n --epochs 40 --n-splits 5 \\\n --backbone refugelike \\\n --img-crop-manifest 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\nfrom pathlib import Path\n\nRUN_DIRS = {\n \"nocrop\": (Path(\"analysis_data/pipeline_nocrop\"), [\"single\", \"ensemble\"]),\n \"gt\": (Path(\"analysis_data/pipeline_gt\"), [\"single\", \"ensemble\"]),\n \"unet\": (Path(\"analysis_data/pipeline_unet\"), [\"single\", \"ensemble\"]),\n \"imgonly_nocrop\":(Path(\"analysis_data/pipeline_imgonly_nocrop\"),[\"single\"]),\n \"imgonly_gt\": (Path(\"analysis_data/pipeline_imgonly_gt\"), [\"single\"]),\n \"imgonly_unet\": (Path(\"analysis_data/pipeline_imgonly_unet\"), [\"single\"]),\n}\nEVAL_MODES = [\"binary\", \"multiclass\"]\n\nfor run_name, (run_dir, tower_modes) 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 (auto-detects all available probs stems)\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 (auto-detects all heads)\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 \"--style\", \"strips\",\n ], check=True)\n\n # Probability triangle-3D — multiclass only (auto-detects all heads)\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 \"--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
}