یادگیری خود نظارتی برای خوشه بندی عمیق
روشهای خوشهبندی عمیق موجود برای کار خوشهبندی پاییندستی به یادگیری نمایش متضاد یا غیر متضاد متکی هستند. روشهای مبتنی بر تضاد به لطف جفتهای منفی، نمایشهای یکنواختی را برای خوشهبندی میآموزند، که در آن جفتهای منفی، با این حال، ممکن است ناگزیر به مسئله برخورد کلاس منجر شوند و در نتیجه عملکرد خوشهبندی را به خطر بیندازند. از سوی دیگر، روشهای مبتنی بر غیر متضاد، از مسئله برخورد کلاس جلوگیری میکنند، اما نمایشهای غیریکنواخت حاصل ممکن است باعث فروپاشی خوشهبندی شوند. برای لذت بردن از نقاط قوت هر دو جهان، این مقاله یک روش جدید خوشهبندی عمیق پایان به انتها با پراکندگی نمونه اولیه و نمونهگیری مثبت را ارائه میکند که ProPos نامیده میشود. به طور خاص، ما ابتدا فاصله بین نمایشهای اولیه را به حداکثر میرسانیم که از دست دادن پراکندگی نمونه اولیه نامیده میشود، که یکنواختی نمایشها را بهبود میبخشد. دوم، ما یک نمای افزوده شده از نمونه را با همسایگان نمونه برداری شده از نمای دیگر همسو می کنیم – فرض می شود که جفت واقعاً مثبت در فضای جاسازی است – برای بهبود فشردگی درون خوشه ای که تراز نمونه گیری مثبت نامیده می شود. نقاط قوت ProPos عبارتند از: مسئله برخورد کلاسی قابل اجتناب، نمایش های یکنواخت، خوشه های به خوبی جدا شده و فشردگی درون خوشه ای. با بهینهسازی ProPos در چارچوب حداکثرسازی انتظارات سرتاسر، نتایج تجربی گسترده نشان میدهد که ProPos به عملکرد رقابتی در مجموعه دادههای معیار خوشهبندی در مقیاس متوسط دست مییابد و عملکرد پیشرفتهای را در مجموعه دادههای مقیاس بزرگ ایجاد میکند.
آموزش
الزامات نصب
کلسترینگ kmeans و GMM با استفاده از PyTorch خالص بازنویسی شده و کد آن در این پروژه وجود دارد.
torch_clustering
این مخزن شامل پیاده سازی PyTorch خالص از موارد زیر است:
Kmeans با مقداردهی اولیه kmeans++.
مدل مخلوط گاوسی (GMM)؛
پشتیبانی از فاصله اقلیدسی و کسینوس؛
پشتیبانی از هر دو تانسور cpu و gpu و خوشه بندی توزیع شده!
علاوه بر این، یک بسته بندی Faiss ارائه می دهیم که می تواند با کد بدون هیچ تغییری استفاده شود!
نصب
git clone --depth https://github.com/Hzzone/torch_clustering cd torch_clustering && pip install -e .
مثال
دو فایل برای مثال وجود دارد:
distribute_kmeans_example.py نحوه استفاده از خوشه بندی توزیع شده را نشان می دهد.
example_and_benchmark.ipynb در Colab کاوش کنید
قطعه:
from torch_clustering import PyTorchKMeans, FaissKMeans, PyTorchGaussianMixture, evaluate_clustering clustering_model = PyTorchKMeans(init='k-means++', max_iter=300, tol=1e-4, **kwargs) psedo_labels = clustering_model.fit_predict(features)
معیار
تست شده روی colab (تسلا T4)
CIFAR-10 | NMI | ACC | Speed |
---|---|---|---|
Faiss kmeans (nredo 5 maxiter 50) | 0.8551 | 0.9236 | 0.73+-0.09 |
torch_clustering kmeans (nredo 10 maxiter 300) | 0.8552 | 0.9235 | 4.59+-0.05 |
torch_clustering GMM (nredo 10×10 maxiter 300) | 0.8559 | 0.9238 | 11.67+-0.33 |
در ImageNet، عملکرد torch_clustering Faiss بسیار بهتر خواهد بود.
ابتدا باید شبیه سازی کنیم:
git clone --depth 1 https://github.com/Hzzone/torch_clustering tmp && mv tmp/torch_clustering . && rm -rf tmp
و سپس سایر موارد مورد نیاز را نصب کنید:
pip install -r requirements.txt
مجموعه داده ها
مجموعه داده های مورد استفاده در ProPos را می توان از وب سایت های رسمی دانلود کرد.
فایل های تصویر ImageNet-10 و ImageNet-Dogs در این پروژه وجود دارد
دستورات آموزشی
فایل های پیکربندی در config/ هستند، فقط دستور زیر را اجرا کنید:
export CUDA_VISIBLE_DEVICES=0,1,2,3 # use the first 4 GPUs torchrun --master_port 17673 --nproc_per_node=4 main.py config/cifar10_r18_propos.yml
یا
export CUDA_VISIBLE_DEVICES=0,1,2,3 # use the first 4 GPUs
python -m torch.distributed.launch –nproc_per_node=4 –master_port=17672 main.py config/cifar10_r18_propos.yml
همچنین می توانیم WANDB را فعال کنیم تا آموزش را تجسم کند!
پارامترهای wandb را روی true تنظیم کنید و به wandb.ai وارد شوید:
wandb login xxx
دانلود مدل های از پیش آموزش دیده و لاگ های آموزشی
چند مدل از پیش آموزش دیده و گزارش های آموزشی آنها در این پروژه وجود دارد.
بازنمایی های آموخته شده را تجسم کنید
notebook/feature_visualization.ipynb
پروژه مشابه دارید؟
برای ثبت سفارش در سیمیا می توانید از طریق اپلیکیشن سیمیا، یا فرم ثبت سفارش در سایت اقدام کرده و یا از طریق ایمیل، واتساپ، تلگرام، سروش و اینستاگرام اقدام نمایید.
اپلیکیشن سیمیا را از بازار و مایکت دانلود کنید.
لینک پشتیبانی واتساپ، سروش و تلگرام در پایین وجود دارد.
09392265610
نشانی ایمیل سیمیا simiya_ht@yahoo.com می باشد.
از برقراری تماس برای هماهنگی پروژه خودداری کنید، حجم بالای سفارشات به ما اجازه نمی دهد تا از طریق تلفن پاسخگوی شما عزیزان باشیم، حتما درخواست خود را به صورت مکتوب و از طریق یکی از راه های ذکر شده فوق ارسال نمایید، درخواست خود را به طور کامل و با تمام فایل ها و توضیحات لازم ارسال نمایید تا مدت زمان بررسی آن به حداقل برسد. پس از تعیین کارشناس، در اسرع وقت به شما پاسخ می دهیم.
نقد و بررسیها
هیچ دیدگاهی برای این محصول نوشته نشده است.