這是我們關於拓樸驅動奇點分析的 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 實驗室的成員維護。如果您遇到任何問題,請開啟問題。