هذا هو الكود الخاص بورقة 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
سيؤدي هذا إلى الاستفادة من إجراء اختيار المعلمة الآلي بناءً على أقرب الجيران. لاحظ أن هذا المثال يستخدم المزيد من نقاط الاستعلام؛ فمن الممكن بالطبع ضبط هذه المعلمة.
تحقق من مجلد الأمثلة للحصول على بعض مقتطفات التعليمات البرمجية التي توضح كيفية استخدام TARDIS في التعليمات البرمجية الخاصة بك. جميعهم يستفيدون من واجهة برمجة التطبيقات الأولية.
يتم إصدار الكود الخاص بنا بموجب ترخيص BSD-3-Clause. يسمح لك هذا الترخيص بشكل أساسي باستخدام الكود الخاص بنا بحرية حسب الرغبة، ودمجه في مشاريعك، وغير ذلك الكثير --- بشرط أن تعترف بالمؤلفين الأصليين. يرجى الرجوع إلى LICENSE.md لمزيد من المعلومات.
تتم صيانة هذا المشروع من قبل أعضاء مختبر AIDOS. برجاء فتح الموضوع في حالة مواجهة أي مشكلة.