Одна сеть
Одна сеть для картины и всей переписки
Реальная сеть, созданная и обученная здесь: фрагменты картины, глубина, которую предполагает краска, и каждая буква этого разговора — в одном общем пространстве. Никакого предварительного обучения.
Картина, фрагмент за фрагментом
Сеть изучает картину маленькими фрагментами, каждый из которых имеет свой свет, цвет и положение, и запоминает эти слова. Те же веса считывают буквы нити.
- Шагов обучения
- 0
- Ошибка изображения
- —
- Ошибка в буквах
- —
- Ошибка глубины
- —
- Фрагменты, нашедшие свои слова
- —
- Фрагменты краски
- 0
- Слов в его пространстве
- 0
- Изучено букв
- 0
- Известных символов
- 0
Слова, которые она выучивает, — это то, чему может научить краска: насколько фрагмент яркий, какого он цвета и где находится. Работа с текстом изучает порядок букв, а не смысл. Здесь нет ничего предобученного; градиенты вычисляются прямо в этой вкладке.
Обучение в реальном времени
Оно запускается автоматически при открытии страницы и обучается прямо здесь, в этой вкладке. Каждые сто шагов оно записывает результаты измерений.
Ожидание построения сети…
Все приложение на Python и JAX
Эта страница и программа ниже — одна сеть. Программа представляет собой полноценное приложение: окно GTK4, градиенты JAX, картина, поток, предсказываемая глубина и общее пространство. Скопируйте или сохраните её, а затем запустите на своем компьютере.
- Пятна краски
- —
- Слова, которые она изучает
- —
- Буквы, которые она считывает
- —
- Файлы, которые должны быть вместе
- net_gtk.py
Что делает это окно
- Обучайте 300 или 2 000 шагов или остановитесь на полпути; обучение идет в отдельном потоке, поэтому окно остается активным.
- Нажмите на любой фрагмент картины, и программа сообщит вам слова, которые она сопоставляет с этим фрагментом.
- Спросите словами — «теплое золото», «темно-синий» — и она подсветит фрагменты, на которые попал запрос.
- Введите несколько букв, и она выведет список букв, которые ожидает увидеть следующими, с указанием процентов.
- Вставьте свой текст и нажмите «Learn this instead»: новые буквы получат новые строки в той же таблице, ничего из ранее изученного не будет удалено.
- Два рисунка под картиной: предсказанная глубина и пространство, где точки — это краска, а квадраты — слова.
- Сохраните веса в net_weights.json и загрузите их снова в следующий раз.
Как запустить
Одна папка, один файл и картина под названием painting.jpg, если она у вас есть. В Linux в этой папке:
-
Установите пакеты Python
python3 -m pip install jax numpy pillow -
Установите GTK4 и привязки для Python
sudo apt install python3-gi gir1.2-gtk-4.0 -
Откройте окно
python3 net_gtk.py
В Windows кратчайший путь — MSYS2: pacman -S mingw-w64-x86_64-python-gobject mingw-w64-x86_64-gtk4, затем python -m pip install jax numpy pillow, затем python net_gtk.py в том же терминале MSYS2.
На macOS: brew install pygobject3 gtk4, затем python3 -m pip install jax numpy pillow, затем python3 net_gtk.py.
Нет дисплея? python3 net_gtk.py --selftest запустит обучение в терминале и выведет те же числа.
Проверено путем запуска этого файла в терминале с JAX для этой картины и этого потока: 400 шагов → 67% патчей находят свои слова (ошибка изображения 0,68), 2 000 шагов → 95% (0,53), 5 000 шагов → 97% (0,45). Ошибка глубины заканчивается на 0,0003, а ошибка букв падает с 3,05 до 2,90.
Браузер не может запускать Python, поэтому во вкладке отображается файл, а не окно — та же сеть работает в реальном времени выше. Слова, которые она изучает, — это те, которым может научить картина: в этой картине нет синего, поэтому вопрос о синем попадает на золотистые участки. Заголовок буквы знает порядок букв, а не смысл.
Компилятор для Python и JAX выше
В поле содержится прямой проход одной сети. Компилятор читает его, проверяет и записывает дважды: Python для JAX и JavaScript, который выполняется в этой вкладке. Одно дерево, два бэкенда.
- Токены
- —
- Узлы в дереве
- —
- Функции
- —
Что вычисляется
Проверка сравнивает эти числа с результатами той же программы, запущенной в numpy и JAX с теми же начальными весами — значения измерены до создания этой карточки, а не угаданы.
Что разрешено в языке
- def name(a, b): с отступом в теле, name = ..., и return ...
- Числа, имена, скобки, унарный минус, а также + - * / @ для матричного произведения.
- .T для транспонирования, а также вызовы tanh, sqrt, exp, log, sum, mean, maximum.
- Любой другой символ останавливает компилятор с указанием строки и колонки вместо того, чтобы гадать.
Это настоящий компилятор для небольшого языка, а не среда выполнения Python: никаких циклов, классов или импортов. Прямой проход одной сети умещается в него, поэтому один и тот же текст может стать JAX на вашем компьютере и JavaScript в этой вкладке.
Виртуальные глаза: они видят только пиксели
Глаз, направленный на монитор: он получает изображение и ничего больше — ни страницы, ни данных, ни сети. Только по этим пикселям он находит края, углы и то, как каждая точка смещается при движении глаза в сторону, и на основе этого восстанавливает положение объектов в пространстве.
- Просмотрено кадров
- 0
- Углы
- 0
- Отслеживается
- 0
- Медианное движение
- —
- Глубина найдена
- —
- Точки в пространстве
- 0
- Один кадр
- —
Глубина — это реальная геометрия, но только в пределах шага глаза и только там, где у изображения есть текстура — однотонная заливка не дает зацепок. Видеть, где стоит стена, не значит знать, что это стена, и ничто здесь не создает мир: комната выше — это измеренные пиксели.
Ваша идея и то, что всё ещё потребуется
- Глаза, смотрящие на монитор, — это настоящий интерфейс: модели, которая считывает экран так же, как человек, не нужен плагин для каждой программы — всё видимое уже является входными данными.
- Из двух кадров движущегося глаза вы получаете геометрию, с которой должна согласовываться модель мира; эту часть данная карточка реализует по-настоящему.
- Для генерации мира в реальном времени также нужна модель, которая придумывает то, чего никто не видел, сохраняет согласованность при повороте и работает за миллисекунды — этого нет во вкладке, и страница не может её обучить.
- Честный предел: этот глаз восстанавливает положение вещей, а не их смысл. Скорость видения — это не понимание, и одно гораздо проще другого.
Изображение: общественное достояние, скан «Тайной вечери» Леонардо да Винчи, Wikimedia Commons.
