Log ON/OFF and robustness results, add resume script
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
f477a6f588
commit
b34bdae638
2 changed files with 42 additions and 0 deletions
14
augment/resume.sh
Normal file
14
augment/resume.sh
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
# Relaunch runs interrupted by the 2026-10-14 shutdown. Data files are already in ~/run/exp.
|
||||
# Each run.sh overwrites <name>/result.csv; finished runs are skipped.
|
||||
cd ~/run/exp
|
||||
B="KNP_COL_JITTER=20 KNP_MNIST_THR=60 KNP_MNIST_ADD_THR_SCALE=0 KNP_MNIST_INFER_INHIB=255"
|
||||
done_run() { grep -q ELAPSED "$1/result.csv" 2>/dev/null; }
|
||||
done_run aug_v_B30k || MODEL=altai DATA=augB_val ./run.sh aug_v_B30k 30000 $B > aug_v_B30k.err 2>&1 &
|
||||
done_run aug_v_A90k || MODEL=altai DATA=augA_val ./run.sh aug_v_A90k 90000 $B > aug_v_A90k.err 2>&1 &
|
||||
done_run oo_v_full || MODEL=altai DATA=oofull_val ./run.sh oo_v_full 30000 $B KNP_MNIST_INPUT_SIZE=1568 > oo_v_full.err 2>&1 &
|
||||
done_run sz80_30k_s42 || MODEL=altai ./run.sh sz80_30k_s42 30000 $B KNP_COL_SIZE=80 KNP_COL_SEED=42 > sz80_30k_s42.err 2>&1 &
|
||||
done_run sz80_30k_s1 || MODEL=altai ./run.sh sz80_30k_s1 30000 $B KNP_COL_SIZE=80 KNP_COL_SEED=1 > sz80_30k_s1.err 2>&1 &
|
||||
done_run sz40_60k_s42 || MODEL=altai ./run.sh sz40_60k_s42 60000 $B KNP_COL_SIZE=40 KNP_COL_SEED=42 > sz40_60k_s42.err 2>&1 &
|
||||
done_run sz80_60k_s42 || MODEL=altai ./run.sh sz80_60k_s42 60000 $B KNP_COL_SIZE=80 KNP_COL_SEED=42 > sz80_60k_s42.err 2>&1 &
|
||||
wait
|
||||
|
|
@ -201,3 +201,31 @@ python3 /mnt/c/KNP/cats-dogs/run.py test --dataset contrast_train_test --train 8
|
|||
- Сверка готовых файлов, без новых запусков, `cmp` всех CSV (float/quant neurons/weights, result.csv):
|
||||
- `backend_altai_full` (tuned, 2 потока) против `v2_val_c20_t4000` (single): **все побайтно совпадают**, 626/1000. Время: tuned2 80,77 с против single 22,84 с — многопоточность в 3,5 раза медленнее.
|
||||
- `fast_smoke` (кэш подключений) против `backend_altai_single` (800+200): **все побайтно совпадают**, 123/200. Время 4,39 с против 4,89 с (~10% быстрее). Полный замер fast на 4000+1000 ещё не делался.
|
||||
|
||||
## Вечер: ON/OFF-вход, устойчивость сети, аугментация (MNIST как полигон)
|
||||
|
||||
Цель пользователя — распознавание объектов; MNIST используется как быстрый полигон, находки переносятся на кошек/собак.
|
||||
|
||||
### Код
|
||||
- `examples/examples/mnist-learn/global_config.h`: размер входа теперь `get_input_size()` из `KNP_MNIST_INPUT_SIZE` (по умолчанию 784); замены в `dataset.cpp`, `models/{altai,blifat}/construct_network.cpp`. Пример пересобран в `~/knp-build`.
|
||||
- `onoff/prepare_onoff.py` — ON/OFF-датасеты (1568 байт: ON + OFF; режимы full/half/local).
|
||||
- `viz/altai_sim.py --pix 1568` — симулятор для ON/OFF; сверка с KNP 177 против 179 из 300.
|
||||
- `augment/tta_sim.py` — голосование сдвигами при ответе и проверка устойчивости в симуляторе.
|
||||
- `augment/augment_mnist.py` — аугментация train: сдвиг ±2, поворот ±12°, масштаб 0,9–1,1, толще/тоньше на 1 px; eval-часть без изменений.
|
||||
- `augment/resume.sh` — перезапуск прерванных прогонов.
|
||||
|
||||
### Результаты (validation = train 50000–59999, обучение 30 000, настройки лучшей сети, seed 42)
|
||||
| Прогон | Вход | Верно |
|
||||
| --- | --- | --- |
|
||||
| `oo_v_base` | обычный | **92,5%** (на тесте та же сеть `fin30k_s42` — 92,3%) |
|
||||
| `oo_v_local` | ON/OFF, OFF в полосе 2 px | 56,5% |
|
||||
| `oo_v_half` | ON/OFF, OFF ×0,5 везде | 55,9% (колонки 5, 8, 9 молчат) |
|
||||
| `oo_v_full` | ON/OFF, OFF везде | не досчитан |
|
||||
|
||||
Почему ON/OFF провалился: спайков на входе в 3–4 раза больше; на трети картинок у всех колонок отрицательная сумма весов (молчание). Не квантование: на float-весах картина та же. Следующий шаг — нормировать поток спайков (ON+OFF ≈ как раньше).
|
||||
|
||||
Устойчивость лучшей сети (симулятор, 2000 тестовых картинок): как в MNIST 90,1%; сдвиг 1 px 83,8%; 2 px 63–65%; толще 1 px 78,8%; тоньше 1 px 75,5%. Сеть — набор трафаретов, поэтому нарисованные в визуализаторе цифры распознаются плохо. Голосование 9 сдвигами (±1): как есть 91,5%, сдвиг 2 px 70,0%, толще 82,7%, тоньше 85,3%.
|
||||
|
||||
### Прервано выключением компьютера (перезапуск: `augment/resume.sh`)
|
||||
`aug_v_B30k` (10 000 ×3 копии) — см. результат ниже, если успел; `aug_v_A90k` (30 000 ×3), `oo_v_full`, `sz80_30k_s{42,1}`, `sz{40,80}_60k_s42` остановлены вручную перед выключением.
|
||||
Проверить после обучения: `augment/tta_sim.py aug_v_B30k val30000.bin val30000.target --first 30000` — устойчивость к сдвигу/толщине, сравнение с `oo_v_base`.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue