Судоку. Думаем за рекурсию.

Aug 09, 2024 23:14

Потихоньку думаю про рекурсию. Она возможна на pytorch, если запускать нейросеть несколько раз и давать ей на вход данные с выхода предыдущей итерации.


Чем дальше я про всё это думаю, тем больше мне программирование на pytorch напоминает программирование на Verilog. И там и там массовый параллелизм и есть input/output данные модуля. Так что если рассматривать нейросетку как один такт процессора в Verilog, то очень похожим образом данные преобразуются.

Базовым кирпичиком для рекурсии является возможность записать в каком порядке мы использовали элементы для того, что-бы потом раскрутить рекурсию в обратном направлении. И вот вам таки пример заполнения "стека используемых элементов".


Выглядит немного непривычненько, но работает. Результатом запуска этой программы является такой лог.


Соответственно имея порядок обхода элементов не составляет труда раскрутить эту последовательность в обратном направлении.

Кстати тут интересный момент - раньше не мог понять, что делает блок MaxPool2d в Yolo v5 и почему он так существенно улучшает распознавание изображений (если сравнивать со случаем, когда этот блок заменён на простое conv+relu уменьшающее изображение). MaxPool2d позволяет нейросетке четко выбрать один из вариантов и сказать "в этом квадрате мы нашли элемент такой-то".
Previous post Next post
Up