PC-DARTS ได้รับการยอมรับในการนำเสนอที่โดดเด่นที่ ICLR 2020!
PC-DARTS เป็นวิธีสถาปัตยกรรมที่สร้างความแตกต่างได้อย่างมีประสิทธิภาพหน่วยความจำโดยอิงจาก DARTS โดยเน้นไปที่การลดต้นทุนหน่วยความจำขนาดใหญ่ของ super-net ในวิธี one-shot NAS เป็นหลัก ซึ่งหมายความว่าสามารถใช้ร่วมกับวิธี one-shot NAS อื่นๆ ได้ เช่น ENAS แตกต่างจากวิธีการสุ่มตัวอย่างก่อนหน้านี้ PC-DARTS เก็บตัวอย่างช่องของซุปเปอร์เน็ตที่สร้างขึ้น สิ่งที่น่าสนใจ แม้ว่าเราจะแนะนำการสุ่มในระหว่างกระบวนการค้นหา แต่ประสิทธิภาพของสถาปัตยกรรมที่ค้นหานั้น ดีกว่าและเสถียรกว่า DARTS! สำหรับคำอธิบายโดยละเอียดเกี่ยวกับรายละเอียดด้านเทคนิคและผลการทดลอง โปรดดูเอกสารของเรา:
การเชื่อมต่อช่องสัญญาณบางส่วนสำหรับการค้นหาสถาปัตยกรรมเชิงอนุพันธ์ที่มีประสิทธิภาพหน่วยความจำ
ซูหยูหุย, หลิงซีเสีย, เสี่ยวเผิงจาง, ซินเฉิน, กัวจุนฉี, ฉีเทียน และหงไคสง
รหัสนี้ขึ้นอยู่กับการใช้งาน DARTS
นอกจากนี้ ระบบจะอัปโหลดการดำเนินการสุ่มตัวอย่างเพื่อการพิจารณาของคุณด้วย
อัปโหลดไฟล์หลักสำหรับการค้นหาบน ImageNet แล้ว train_search_imagenet.py
วิธี | พารามิเตอร์(M) | ข้อผิดพลาด(%) | ต้นทุนการค้นหา |
---|---|---|---|
อะมีบาเน็ต-บี | 2.8 | 2.55 | 3150 |
ปาเป้าV1 | 3.3 | 03.00 น | 0.4 |
ดาร์ทเอสวี2 | 3.3 | 2.76 | 1.0 |
สนาส | 2.8 | 2.85 | 1.5 |
พีซี-ปาเป้า | 3.6 | 2.57 | 0.1 |
ใช้ GPU เพียง 0.1 วัน ในการค้นหา CIFAR-10!
วิธี | ฟลอป | ข้อผิดพลาดอันดับ 1 (%) | ข้อผิดพลาด 5 อันดับแรก (%) | ต้นทุนการค้นหา |
---|---|---|---|---|
NASNet-เอ | 564 | 26.0 | 8.4 | 1800 |
อะมีบาเน็ต-บี | 570 | 24.3 | 7.6 | 3150 |
พนส | 588 | 25.8 | 8.1 | 225 |
ดาร์ทเอสวี2 | 574 | 26.7 | 8.7 | 1.0 |
สนาส | 522 | 27.3 | 9.3 | 1.5 |
พีซี-ปาเป้า | 597 | 24.2 | 7.3 | 3.8 |
ค้นหาสถาปัตยกรรมที่ดีบน ImageNet โดยใช้ช่องค้นหาของ DARTS( First Time! )
หากต้องการรันโค้ดของเรา คุณจำเป็นต้องมี Nvidia 1080ti(หน่วยความจำ 11G) เพียงตัวเดียวเท่านั้น
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 ชั่วโมงบน GPU V100 จำนวน 8 ตัว (ตัวละ 16G) หากคุณมี V100(32G) คุณสามารถเพิ่มขนาดแบทช์เพิ่มเติมได้
เราสุ่มตัวอย่าง 10% และ 2.5% จากชุดข้อมูลการฝึกอบรมแต่ละคลาสของ ImageNet ยังมีอีก 1,000 คลาส! แทนที่ 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
ตามที่อธิบายไว้ในรายงาน เราใช้วิธีที่มีประสิทธิภาพในการนำ Channel Sampling ไปใช้ ขั้นแรก ชุดย่อยคงที่ของอินพุตจะถูกเลือกเพื่อป้อนเข้าสู่การดำเนินการของตัวเลือก จากนั้นเอาต์พุตที่ต่อกันจะถูกสลับ มีการดำเนินการสลับที่มีประสิทธิภาพสองแบบ: สลับช่องและเปลี่ยนช่อง สำหรับการทำให้ขอบเป็นมาตรฐาน เราจะกำหนดพารามิเตอร์ขอบ (เบต้าในโค้ดของเรา) พร้อมกับพารามิเตอร์อัลฟ่าในโค้ดปาเป้าดั้งเดิม
มีการจัดเตรียมการใช้การสุ่มตัวอย่างด้วย model_search_random.py
นอกจากนี้ยังใช้งานได้ในขณะที่การสุ่มช่องอาจมีประสิทธิภาพดีกว่า
เนื่องจาก PC-DARTS เป็นวิธี NAS ที่มีประสิทธิภาพด้านหน่วยความจำเป็นพิเศษ มีศักยภาพที่จะนำไปใช้กับงานอื่นๆ เช่น การตรวจจับและการแบ่งส่วน
การค้นหาสถาปัตยกรรมเชิงอนุพันธ์แบบก้าวหน้า
การค้นหาสถาปัตยกรรมที่แตกต่าง
หากคุณใช้รหัสของเราในการวิจัยของคุณ โปรดอ้างอิงรายงานของเราตามนั้น
@อยู่ระหว่างดำเนินการ{ xu2020pcปาเป้า, 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} -