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