تم قبول PC-DARTS لعرضها تحت الأضواء في ICLR 2020!
PC-DARTS هي طريقة معمارية قابلة للتمييز وفعالة من حيث الذاكرة تعتمد على DARTS . وهو يركز بشكل أساسي على تقليل تكلفة الذاكرة الكبيرة للشبكة الفائقة بطريقة NAS ذات اللقطة الواحدة، مما يعني أنه يمكن أيضًا دمجها مع طريقة NAS الأخرى ذات اللقطة الواحدة، على سبيل المثال ENAS . يختلف PC-DARTS عن الطرق السابقة في عمليات أخذ العينات، حيث يقوم بأخذ عينات من قنوات الشبكة الفائقة التي تم إنشاؤها. ومن المثير للاهتمام أنه على الرغم من أننا أدخلنا العشوائية أثناء عملية البحث، إلا أن أداء البنية التي تم البحث عنها أفضل وأكثر استقرارًا من DARTS! للحصول على وصف تفصيلي للتفاصيل الفنية والنتائج التجريبية، يرجى الرجوع إلى ورقتنا:
اتصالات القنوات الجزئية للبحث في البنية التفاضلية ذات الكفاءة في الذاكرة
يوهوي شو، لينغكسي شيه، شياو بنغ تشانغ، شين تشن، قوه جون تشي، تشي تيان وهونغكاي شيونغ.
يعتمد هذا الرمز على تنفيذ DARTS.
يتم أيضًا تحميل تنفيذ أخذ العينات العشوائية للنظر فيها.
تم تحميل الملف الرئيسي للبحث على ImageNet train_search_imagenet.py
.
طريقة | بارامس (م) | خطأ(٪) | تكلفة البحث |
---|---|---|---|
أميبا نت-ب | 2.8 | 2.55 | 3150 |
دارتسV1 | 3.3 | 3.00 | 0.4 |
DARTSV2 | 3.3 | 2.76 | 1.0 |
SNAS | 2.8 | 2.85 | 1.5 |
PC-السهام | 3.6 | 2.57 | 0.1 |
يتم استخدام 0.1 يوم GPU فقط للبحث في CIFAR-10!
طريقة | يتخبط | خطأ أعلى 1(%) | أعلى 5 أخطاء (٪) | تكلفة البحث |
---|---|---|---|---|
ناس نت-أ | 564 | 26.0 | 8.4 | 1800 |
أميبا نت-ب | 570 | 24.3 | 7.6 | 3150 |
بناس | 588 | 25.8 | 8.1 | 225 |
DARTSV2 | 574 | 26.7 | 8.7 | 1.0 |
SNAS | 522 | 27.3 | 9.3 | 1.5 |
PC-السهام | 597 | 24.2 | 7.3 | 3.8 |
ابحث عن معمارية جيدة على ImageNet باستخدام مساحة البحث في DARTS ( أول مرة! ).
لتشغيل الكود الخاص بنا، تحتاج فقط إلى Nvidia 1080ti (ذاكرة 11 جيجا).
python train_search.py
إعداد البيانات: يجب أخذ عينات عشوائية من الصور بنسبة 10% و2.5% قبل كل فئة من مجموعات التدريب كقطار وفال، على التوالي. يتم حفظ البيانات التي تم أخذ عينات منها في ./imagenet_search
. لاحظ أنه لا ينبغي استخدام torch.utils.data.sampler.SubsetRandomSampler لأخذ عينات البيانات نظرًا لأن imagenet كبير جدًا.
python train_search_imagenet.py --tmp_data_dir /path/to/your/sampled/data --save log_path
python train.py --auxiliary --cutout
python train_imagenet.py --tmp_data_dir /path/to/your/data --save log_path --auxiliary --note note_of_this_run
قريباً!.
بالنسبة للأكواد الموجودة في الفرع الرئيسي، يوصى باستخدام python2 with pytorch(3.0.1)
(يعمل على Nvidia 1080ti
). لقد قدمنا أيضًا رموزًا في V100_python1.0
إذا كنت تريد تنفيذ PC-DARTS على Tesla V100
باستخدام python3+
و pytorch1.0+
.
يمكنك أيضًا تشغيل الرموز على وحدة معالجة الرسومات (GPU) بذاكرة 4G فقط. تكلفة PC-DARTS أقل من ذاكرة 4G فقط، إذا استخدمنا نفس إعدادات المعلمات الفائقة مثل DARTS(batch-size=64).
يمكنك البحث في ImageNet عن طريق model_search_imagenet.py
! سيتم تحميل ملف التدريب للبحث على ImageNet بعد تنظيفه أو يمكنك إنشاؤه وفقًا لملف Train_search على CIFAR10 وملف evluate على ImageNet. تم الإبلاغ عن المعلمات الفائقة في ورقتنا! كلف البحث 11.5 ساعة على 8 وحدات معالجة رسوميات V100 (16 جيجا لكل منها). إذا كان لديك V100(32G)، فيمكنك زيادة حجم الدفعة.
قمنا باختيار عينة عشوائية بنسبة 10% و2.5% من كل فئة من مجموعات بيانات التدريب الخاصة بـ ImageNet. لا يزال هناك 1000 فئة! استبدل input_search, target_search = next(iter(valid_queue))
بالرموز التالية سيكون أسرع بكثير:
try: input_search, target_search = next(valid_queue_iter) except: valid_queue_iter = iter(valid_queue) input_search, target_search = next(valid_queue_iter)
الرموز الرئيسية لـ PC-DARTS موجودة في الملف model_search.py
. وكما هو موضح في الورقة، فإننا نستخدم طريقة فعالة لتنفيذ أخذ عينات القناة. أولاً، يتم تحديد مجموعة فرعية ثابتة من المدخلات ليتم إدخالها في العمليات المرشحة، ثم يتم تبديل المخرجات المتسلسلة. يتم توفير عمليتين للتبديل الفعالتين: تبديل القنوات وتغيير القناة. بالنسبة لتطبيع الحافة، نحدد معلمات الحافة (بيتا في أكوادنا) جنبًا إلى جنب مع معلمات ألفا في رموز السهام الأصلية.
يتم أيضًا توفير تنفيذ أخذ العينات العشوائية model_search_random.py
. إنه يعمل أيضًا بينما قد يكون لخلط القنوات أداء أفضل.
نظرًا لأن PC-DARTS عبارة عن أساليب NAS فائقة الكفاءة في الذاكرة. لديها إمكانات ليتم تنفيذها في مهام أخرى مثل الكشف والتجزئة.
البحث التقدمي في العمارة التفاضلية
بحث العمارة التفاضلية
إذا كنت تستخدم الكود الخاص بنا في بحثك، فيرجى الاستشهاد بورقتنا وفقًا لذلك.
@inproceedings{ xu2020pcdarts, title={{{}PC{}}-{{}DARTS{}}: اتصالات القنوات الجزئية للبحث في البنية ذات الكفاءة في الذاكرة}، المؤلف={Yuhui Xu وLingxi Xie وXiaopeng Zhang وXin Chen وGuo-Jun Qi وQi Tian وHongkai Xiong}، booktitle={المؤتمر الدولي لتمثيلات التعلم}, العام={2020}, url={https://openreview.net/forum?id=BJlS634tPr} }