ใหม่: แสดงภาพ PBA และการประยุกต์ใช้ส่วนเสริมกับโน้ตบุ๊ก pba.ipynb
!
ขณะนี้รองรับ Python 3 แล้ว
การเพิ่มจำนวนตามประชากร (PBA) เป็นอัลกอริทึมที่เรียนรู้ฟังก์ชันการเพิ่มข้อมูลสำหรับการฝึกอบรมโครงข่ายประสาทเทียมได้อย่างรวดเร็วและมีประสิทธิภาพ PBA จับคู่ผลลัพธ์ที่ล้ำสมัยบน CIFAR ด้วยการประมวลผลน้อยลงหนึ่งพันเท่า ช่วยให้นักวิจัยและผู้ปฏิบัติงานสามารถเรียนรู้นโยบายการเพิ่มใหม่ได้อย่างมีประสิทธิภาพโดยใช้ GPU เวิร์กสเตชันตัวเดียว
พื้นที่เก็บข้อมูลนี้มีโค้ดสำหรับงาน "Population Based Augmentation: Efficient Learning of Augmentation Schedules" (http://arxiv.org/abs/1905.05393) ใน TensorFlow และ Python รวมถึงการฝึกอบรมโมเดลที่มีกำหนดการเสริมที่รายงาน และการค้นพบกำหนดการนโยบายการเสริมใหม่
ดูด้านล่างเพื่อดูภาพกลยุทธ์การเสริมของเรา
รหัสรองรับ Python 2 และ 3
pip install -r requirements.txt
bash datasets/cifar10.sh
bash datasets/cifar100.sh
ชุดข้อมูล | แบบอย่าง | ข้อผิดพลาดในการทดสอบ (%) |
---|---|---|
ซีฟาร์-10 | ไวด์เรสเน็ต-28-10 | 2.58 |
เชค-เชค (26 2x32d) | 2.54 | |
เขย่า - เขย่า (26 2x96d) | 2.03 | |
เขย่า - เขย่า (26 2x112d) | 2.03 | |
PyramidNet+ShakeDrop | 1.46 | |
ลด CIFAR-10 | ไวด์เรสเน็ต-28-10 | 12.82 |
เขย่า - เขย่า (26 2x96d) | 10.64 | |
ซีฟาร์-100 | ไวด์เรสเน็ต-28-10 | 16.73 |
เขย่า - เขย่า (26 2x96d) | 15.31 | |
PyramidNet+ShakeDrop | 10.94 | |
SVHN | ไวด์เรสเน็ต-28-10 | 1.18 |
เขย่า - เขย่า (26 2x96d) | 1.13 | |
SVHN ที่ลดลง | ไวด์เรสเน็ต-28-10 | 7.83 |
เขย่า - เขย่า (26 2x96d) | 6.46 |
สคริปต์ในการสร้างผลลัพธ์จะอยู่ใน scripts/table_*.sh
จำเป็นต้องมีอาร์กิวเมนต์หนึ่งตัวซึ่งเป็นชื่อโมเดลสำหรับสคริปต์ทั้งหมด ตัวเลือกที่ใช้ได้คือตัวเลือกที่รายงานสำหรับชุดข้อมูลแต่ละชุดในตารางที่ 2 ของรายงาน ในบรรดาตัวเลือกต่างๆ: wrn_28_10, ss_32, ss_96, ss_112, pyramid_net
ไฮเปอร์พารามิเตอร์ยังอยู่ภายในไฟล์สคริปต์แต่ละไฟล์ด้วย
ตัวอย่างเช่น หากต้องการสร้างผลลัพธ์ CIFAR-10 ขึ้นมาใหม่บน Wide-ResNet-28-10:
bash scripts/table_1_cifar10.sh wrn_28_10
หากต้องการสร้างผลลัพธ์ SVHN ที่ลดลงบน Shake-Shake (26 2x96d):
bash scripts/table_4_svhn.sh rsvhn_ss_96
จุดเริ่มต้นที่ดีคือ SVHN ที่ลดลงบน Wide-ResNet-28-10 ซึ่งสามารถทำได้ภายในเวลาไม่ถึง 10 นาทีบน Titan XP GPU ที่มีความแม่นยำในการทดสอบถึง 91%+
การใช้งานโมเดลขนาดใหญ่ในยุค 1800 อาจต้องใช้เวลาการฝึกอบรมหลายวัน ตัวอย่างเช่น CIFAR-10 PyramidNet+ShakeDrop จะใช้เวลาประมาณ 9 วันบน Tesla V100 GPU
เรียกใช้การค้นหา PBA บน Wide-ResNet-40-2 ด้วยไฟล์ scripts/search.sh
ต้องมีหนึ่งอาร์กิวเมนต์ ชื่อชุดข้อมูล ตัวเลือกคือ rsvhn
หรือ rcifar10
มีการระบุขนาด GPU บางส่วนเพื่อเริ่มการทดลองหลายครั้งบน GPU เดียวกัน SVHN ที่ลดลงจะใช้เวลาประมาณหนึ่งชั่วโมงบน Titan XP GPU และ CIFAR-10 ที่ลดลงจะใช้เวลาประมาณ 5 ชั่วโมง
CUDA_VISIBLE_DEVICES=0 bash scripts/search.sh rsvhn
กำหนดการผลลัพธ์ที่ใช้ในการค้นหาสามารถรับได้จากไดเร็กทอรีผลลัพธ์ของ Ray และไฟล์บันทึกสามารถแปลงเป็นกำหนดการนโยบายได้ด้วยฟังก์ชัน parse_log()
ใน pba/utils.py
ตัวอย่างเช่น กำหนดการนโยบายที่เรียนรู้เกี่ยวกับ CIFAR-10 ที่ลดลงในช่วง 200 ยุคจะแบ่งออกเป็นค่าไฮเปอร์พารามิเตอร์ของความน่าจะเป็นและขนาด (ค่าสองค่าสำหรับการดำเนินการเสริมแต่ละรายการจะรวมกัน) และแสดงภาพด้านล่าง:
ไฮเปอร์พารามิเตอร์ของความน่าจะเป็นในช่วงเวลาหนึ่ง | ไฮเปอร์พารามิเตอร์ขนาดในช่วงเวลาหนึ่ง |
---|---|
หากคุณใช้ PBA ในการวิจัยของคุณ โปรดอ้างอิง:
@inproceedings{ho2019pba,
title = {Population Based Augmentation: Efficient Learning of Augmentation Policy Schedules},
author = {Daniel Ho and
Eric Liang and
Ion Stoica and
Pieter Abbeel and
Xi Chen
},
booktitle = {ICML},
year = {2019}
}