our_knp/mnist-altai-native/native_viz.html

11 lines
7.5 KiB
HTML
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.

<!doctype html>
<html lang="ru"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Цифры · нативный AltAI</title>
<style>
:root{color-scheme:dark;--bg:#10161e;--card:#1a2430;--line:#334252;--ink:#f2f6fb;--muted:#a4b5c8;--accent:#72e2bb}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,sans-serif}main{max-width:1120px;margin:auto;padding:28px 20px 48px}a{color:var(--accent)}h1{font-size:clamp(28px,5vw,44px);line-height:1.15;margin:10px 0}p{margin:8px 0}.muted{color:var(--muted)}.kicker{letter-spacing:.15em;text-transform:uppercase;font-size:12px;color:var(--accent)}.head{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}.metric{border:1px solid var(--line);padding:12px 18px;border-radius:14px;min-width:180px}.metric strong{display:block;font-size:30px}.grid{display:grid;grid-template-columns:320px minmax(240px,1fr);gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px}.label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}#draw{display:block;width:100%;max-width:280px;height:auto;aspect-ratio:1;border-radius:12px;touch-action:none;background:#000;cursor:crosshair;border:1px solid #4c6077}button{font:inherit;color:var(--ink);background:#243343;border:1px solid #53677e;border-radius:9px;padding:8px 13px;cursor:pointer}button:hover{border-color:var(--accent)}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.controls{display:flex;gap:8px;align-items:center;margin-top:12px}.controls button:first-child{background:var(--accent);color:#07261d;border:0;font-weight:650}.answer{display:flex;align-items:baseline;gap:18px}#answer{font-size:110px;line-height:1.15;font-weight:750;letter-spacing:-.06em}#latency{font-variant-numeric:tabular-nums;color:var(--accent)}#status{min-height:48px;color:var(--muted)}.row{display:grid;grid-template-columns:18px 1fr 55px;gap:10px;align-items:center;margin:12px 0}.track{height:12px;border-radius:10px;background:#0d141c;overflow:hidden}.bar{height:100%;background:#5d819b;border-radius:10px}.row:first-child .bar{background:var(--accent)}.score{font-size:13px;text-align:right;font-variant-numeric:tabular-nums}.preview{display:flex;align-items:center;gap:12px;margin:18px 0}#normalized{width:84px;height:84px;background:#000;image-rendering:pixelated;border-radius:5px}#gallery{display:flex;gap:9px;overflow-x:auto;padding:4px 3px 12px}#gallery button{position:relative;flex:0 0 54px;padding:4px;border-radius:8px}#gallery button[aria-current="true"]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}#gallery canvas{width:44px;height:44px;display:block;background:#000}#gallery small{display:block;font-size:10px;color:var(--muted)}.wide{margin-top:18px}.foot{margin-top:22px;font-size:13px;color:var(--muted);line-height:1.7}#error{color:#ffb49f}body.loading button{opacity:.5}details{margin-top:16px}summary{cursor:pointer}code{font-size:12px;word-break:break-word}@media(max-width:650px){main{padding:20px 12px}.grid{grid-template-columns:1fr}.head{align-items:start;flex-direction:column}.metric{display:flex;align-items:center;gap:15px;width:100%}.metric strong{font-size:26px}.card{padding:16px}#draw{margin:auto;width:280px;max-width:100%}#answer{font-size:86px}}
</style></head><body class="loading"><main>
<div class="kicker">AltAI · нативная спайковая сеть</div><div class="head"><div><h1>Нарисуй цифру</h1><p class="muted">Та же спайковая сеть исполняется в KNP CPU или официальном GoldenModel. Состояние очищается между рисунками.</p></div><div class="metric"><strong id="accuracy">Загрузка…</strong><span>MNIST test · 10 000 цифр<br>проверено в KNP CPU</span></div></div>
<div class="grid"><section class="card"><div class="label">Твой рисунок</div><label for="backend">Исполнение</label><select id="backend" style="width:100%;margin:8px 0 14px;padding:8px;background:#243343;color:#f2f6fb;border:1px solid #53677e;border-radius:8px"><option value="cpu">KNP CPU · быстро</option><option value="gm">Официальный GoldenModel · медленнее</option></select><canvas id="draw" width="280" height="280" aria-label="Поле рисования цифры мышью или пальцем"></canvas><div class="controls"><button id="clear">Очистить</button><button id="recognize">Распознать</button></div><p class="muted" style="font-size:13px">Рисуй одну цифру. Размер и положение исправит нормализация.</p></section>
<section class="card"><div class="label">Ответ сети</div><div class="answer"><strong id="answer" aria-live="polite">—</strong><span id="latency"></span></div><p id="status" role="status">Загружаю новую модель…</p><div id="scores" aria-label="Пять лучших оценок сети"></div><div class="preview"><canvas id="normalized" width="28" height="28" aria-label="Нормализованный вход сети"></canvas><span class="muted" style="font-size:13px">Именно так видит сеть:<br>28×28, рамка 20 px, центр массы.</span></div><p class="muted" style="font-size:12px">Числа справа — разность положительных и отрицательных выходных спайков, не проценты уверенности.</p><p id="error" role="alert"></p></section></div>
<section class="card wide"><div class="label">Примеры из официального test · не использованы при обучении</div><div id="gallery"></div><p id="sample" class="muted" style="font-size:13px"></p></section>
<div class="foot"><p id="architecture"></p><p>55 000 train · 5 000 validation для выбора параметров · 10 000 test. Входной слой перенесён из обученной модели; выход переобучен offline под частотный код и целые веса. Встроенные примеры — из test.</p><p><a href="altai_viz.html">Старые колонки AltAI</a> · <a href="aug_viz.html">Старый вариант со сдвигами</a>. Их исторические веса отличаются от этой модели. <a href="fast_viz.html">Гибридная браузерная модель 98,30%</a>.</p><details><summary>Версия и проверка модели</summary><p id="version"></p><p>Все слои распознавания — AltAILIF и DeltaSynapse. Целые веса до 255, не более четырёх величин на нейрон с учётом сброса; проверены границы потенциалов. Обучение offline, не STDP. KNP CPU проверен на полном test. Официальный GoldenModel проверен отдельно на первых1000 test: все скрытые и выходные счётчики точно совпали с эталоном. Полный test10000 проверен в KNP CPU и CUDA. Рисунок отправляется только на эту рабочую станцию для исполнения выбранным бэкендом.</p><p><a href="native-model.json">Параметры и измеренные метрики</a></p></details></div>
</main><script src="native-model.js"></script></body></html>