Это код нашей статьи ICML об анализе особенностей на основе топологии:
@inproceedings { vonRohrscheidt23a ,
title = { Topological Singularity Detection at Multiple Scales } ,
author = { von Rohrscheidt, Julius and Rieck, Bastian } ,
year = 2023 ,
booktitle = { Proceedings of the 40th International Conference on Machine Learning } ,
publisher = { PMLR } ,
series = { Proceedings of Machine Learning Research } ,
number = 202 ,
pages = { 35175--35197 } ,
editor = { Krause, Andreas and Brunskill, Emma and Cho, Kyunghyun and Engelhardt, Barbara and Sabato, Sivan and Scarlett, Jonathan } ,
abstract = { The manifold hypothesis, which assumes that data lies on or close to an unknown manifold of low intrinsic dimension, is a staple of modern machine learning research. However, recent work has shown that real-world data exhibits distinct non-manifold structures, i.e. singularities, that can lead to erroneous findings. Detecting such singularities is therefore crucial as a precursor to interpolation and inference tasks. We address this issue by developing a topological framework that (i) quantifies the local intrinsic dimension, and (ii) yields a Euclidicity score for assessing the `manifoldness' of a point along multiple scales. Our approach identifies singularities of complex spaces, while also capturing singular structures and local geometric complexity in image data. }
}
Наш код был протестирован на Python 3.8 и Python 3.9 под Mac OS X и Linux. Другие версии Python могут поддерживать не все зависимости.
Рекомендуемый способ установки проекта — через poetry
. Если это доступно, установка должна пройти очень быстро:
$ poetry install
Последние версии pip
также должны иметь возможность установки проекта напрямую:
$ pip install .
Чтобы воспроизвести основные эксперименты в нашей статье, мы отправляем наборы синтетических данных в репозиторий и предлагаем возможность автоматической загрузки наборов данных компьютерного зрения ( MNIST
и FashionMNIST
). Для простоты мы предлагаем сначала воспроизвести эксперименты с синтетическими облаками точек, поскольку они выполняются быстро даже на стандартном настольном компьютере.
Во всех экспериментах используется сценарий cli.py
, который обеспечивает интерфейс командной строки для нашей платформы. Учитывая входные параметры для локальных колец, этот скрипт рассчитает значения эвклидности, как описано в статье. Для простоты весь вывод передается на stdout
, то есть стандартный вывод вашего терминала, и его необходимо перенаправить в файл для последующего анализа.
Впоследствии мы предоставим точные команды для воспроизведения экспериментов; читателям предлагается взглянуть на код в cli.py
или вызвать python cli.py --help
чтобы увидеть, какие дополнительные возможности доступны для обработки данных.
Запустите следующие команды из корневого каталога репозитория:
$ cd tardis
$ python cli.py ../data/Pinched_torus.txt.gz -q 500 -r 0.05 -R 0.45 -s 0.2 -S 0.6 > ../output/Pinched_torus.txt
Это создаст облако точек из 500 точек выборки с
Предупреждение : этот пример может потребовать длительного выполнения на обычной машине. Мы запустили это в нашем кластере (см. также папку scripts
в корневом каталоге).
Запустите следующие команды из корневого каталога репозитория:
$ cd tardis
$ python cli.py -k 100 -q 2000 -d 2 --num-steps 20 ../data/Wedged_spheres_2D.txt.gz > ../output/Wedged_spheres_2D.txt
При этом будет использоваться процедура автоматического выбора параметров на основе ближайших соседей. Обратите внимание, что в этом примере используется больше точек запроса; конечно, можно настроить этот параметр.
В папке примеров вы найдете несколько фрагментов кода, демонстрирующих, как использовать ТАРДИС в вашем собственном коде. Все они используют предварительный API.
Наш код выпущен под лицензией BSD-3-Clause. Эта лицензия по сути позволяет вам свободно использовать наш код по своему усмотрению, интегрировать его в свои проекты и многое другое — при условии, что вы признаете первоначальных авторов. Пожалуйста, обратитесь к LICENSE.md для получения дополнительной информации.
Этот проект поддерживается членами лаборатории AIDOS. Пожалуйста, откройте вопрос, если у вас возникнут какие-либо проблемы.