การใช้งาน ShuffleNet
ใน PyTorch ShuffleNet
เป็นสถาปัตยกรรมเครือข่ายประสาทเทียมที่มีประสิทธิภาพสำหรับอุปกรณ์มือถือ ตามรายงานพบว่ามีประสิทธิภาพเหนือกว่า MobileNet ของ Google เพียงเล็กน้อย
ในหนึ่งประโยค ShuffleNet
เป็นโมเดลที่คล้ายกับ ResNet ที่ใช้บล็อกที่เหลือ (เรียกว่า ShuffleUnits
) โดยมีนวัตกรรมหลักคือการใช้ pointwise หรือ 1x1 เป็นการโน้มน้าว กลุ่ม เมื่อเทียบกับการโน้มน้าวแบบ pointwise ปกติ
โคลน repo:
git clone https://github.com/jaxony/ShuffleNet.git
ใช้โมเดลที่กำหนดไว้ใน model.py
:
from model import ShuffleNet
# running on MNIST
net = ShuffleNet ( num_classes = 10 , in_channels = 1 )
ฝึกฝนบน ImageNet (โดยใช้ตัวอย่าง PyTorch ImageNet) ด้วย groups=3
และไม่มีตัวคูณช่องสัญญาณ ในชุดทดสอบ มีคะแนน 1 อันดับแรก 62.2% และ 5 อันดับแรก 84.2% น่าเสียดายที่นี่เทียบไม่ได้กับตารางที่ 5 ของรายงาน เนื่องจากไม่ได้ใช้เครือข่ายด้วยการตั้งค่าเหล่านี้ แต่อยู่ระหว่างเครือข่ายกับ groups=3
และครึ่งหนึ่งของจำนวนช่อง (42.8% อันดับแรก 1) และเครือข่ายที่มีจำนวนช่องเท่ากัน แต่ groups=8
(32.4% อันดับแรก 1) คุณสามารถดูพจนานุกรมสถานะที่ผ่านการฝึกอบรมได้ที่นี่ ในรูปแบบต่อไปนี้:
{
'epoch': epoch + 1,
'arch': args.arch,
'state_dict': model.state_dict(),
'best_prec1': best_prec1,
'optimizer' : optimizer.state_dict()
}
หมายเหตุ: ได้รับการฝึกอบรมโดยใช้การตั้งค่า ImageNet เริ่มต้น ซึ่งจริงๆ แล้วแตกต่างจากระบบการฝึกอบรมที่อธิบายไว้ในรายงาน รอดำเนินการอีกครั้งด้วยการตั้งค่าเหล่านั้น (และ groups=8
)