这是我们关于拓扑驱动奇点分析的 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. }
}
我们的代码已经在 Mac OS X 和 Linux 下使用 Python 3.8 和 Python 3.9 进行了测试。其他 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
这将利用基于最近邻居的自动参数选择过程。请注意,此示例使用了更多查询点;当然可以调整这个参数。
查看示例文件夹中的一些代码片段,演示如何在您自己的代码中使用 TARDIS。他们都使用初步的API。
我们的代码是根据 BSD-3-Clause 许可证发布的。该许可证本质上允许您根据需要自由使用我们的代码、将其集成到您的项目中等等——前提是您承认原作者。请参阅 LICENSE.md 了解更多信息。
该项目由 AIDOS 实验室的成员维护。如果您遇到任何问题,请打开问题。