นี่คือโค้ดสำหรับรายงาน 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
ซึ่งมีอินเทอร์เฟซบรรทัดคำสั่งให้กับเฟรมเวิร์กของเรา เมื่อระบุพารามิเตอร์อินพุตสำหรับวงแหวนเฉพาะที่ สคริปต์นี้จะคำนวณค่า Euclidicity ตามที่อธิบายไว้ในรายงาน ด้วยเหตุผลของความเรียบง่าย เอาต์พุตทั้งหมดจะถูกส่งไปยัง 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
ซึ่งจะสร้าง point cloud จำนวน 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 Lab กรุณาเปิดปัญหาในกรณีที่คุณประสบปัญหาใด ๆ