В данном задании предлагается разобраться с реализацией одного из базовых алгоритмов Hierarchical Temporal Memory (HTM) — Spatial Pooler (SP) на примере классификации рукописных цифр датасета MNIST. В работе нашей команды мы активно используем модификации SP.
В репозитории находится Jupyter тетрадка с заданием. В ней требуется реализовать Spatial Pooler по аналогии с описанием в blueprint и статье от нументы.
Данная тетрадь сделана на основе примера из нументовского фреймворка htm.core
. Сам их фреймворк нам здесь не понадобится — его ставить не нужно, но можешь ради интереса к тестам ниже добавить и тест эталонной реализации Spatial Pooler. В качестве зависимостей — стандартные библиотеки numpy
, scipy
, sklearn
, matplotlib
. Давай договоримся также использовать Python 3.9.
Для начала посмотри эпизоды 0-8 видео гайда HTMSchool.
Все задание дается в тетради по ходу ее заполнения. Не пропусти пункт 8 задания в самом конце. Минимальный ожидаемый объем работы — все задания кроме самого последнего (пункт 8.3 Newborn stage). Лучше в первую очередь сконцентрироваться на просто работающем алгоритме и затем на пункте 8.1 — чтобы получить чистую и быструю реализацию SP, которую комфортно читать. И далее уже переходить к 8.2-8.3.
Как делать: форкаешь репу -> работаешь как привык -> присылаешь ссылку на свой форк для проверки.
NB: на само ведение разработки тоже обращается внимание (что и как коммитишь). Если есть вопросы, пиши, не стесняйся. Если есть готовое промежуточное решение, тоже имеет смысл об этом написать — так у нас будет возможность раньше поправить ход решения в нужную сторону, если что-то пойдет не так, как задумано :)