#!/usr/bin/env bash
# ResNet18 on CIFAR-10, SGD lr 0.1, cosine schedule, 50 epochs (README setup with epochs 200 -> 50).
set -o pipefail
cd "$(dirname "$0")"
echo "KVERITAS_PHASE name=train"
../env/bin/python -u main.py --lr 0.1 2>&1 | awk '
{ print; fflush() }
/^Epoch: / { ep=$2 }
/Loss: .*Acc: .*\/50000\)/ {
  match($0, /Loss: [0-9.]+/); l=substr($0,RSTART+6,RLENGTH-6)
  match($0, /Acc: [0-9.]+/); a=substr($0,RSTART+5,RLENGTH-5)
  printf "KVERITAS_METRIC name=train_loss value=%s step=%s\nKVERITAS_METRIC name=train_acc value=%s step=%s\n", l, ep, a, ep; fflush()
}
/Loss: .*Acc: .*\/10000\)/ {
  match($0, /Loss: [0-9.]+/); l=substr($0,RSTART+6,RLENGTH-6)
  match($0, /Acc: [0-9.]+/); a=substr($0,RSTART+5,RLENGTH-5)
  printf "KVERITAS_METRIC name=test_loss value=%s step=%s\nKVERITAS_METRIC name=test_acc value=%s step=%s\n", l, ep, a, ep; fflush()
  last=a; if (a+0>best+0) best=a
}
END {
  print "KVERITAS_PHASE name=summary"
  if (last!="") { printf "KVERITAS_CLAIM metric=final_test_acc value=%s\nKVERITAS_CLAIM metric=best_test_acc value=%s\n", last, best }
}'
