تنفيذ ShuffleNet
في PyTorch. ShuffleNet
عبارة عن بنية شبكة عصبية تلافيفية فعالة للأجهزة المحمولة. ووفقا للصحيفة، فإنه يتفوق على MobileNet من جوجل بنسبة مئوية صغيرة.
في جملة واحدة، ShuffleNet
هو نموذج يشبه ResNet يستخدم الكتل المتبقية (تسمى ShuffleUnits
)، والابتكار الرئيسي هو استخدام تلافيف المجموعة النقطية، أو 1x1، بدلاً من التلافيف النقطية العادية.
استنساخ الريبو:
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
ولا يوجد مضاعف للقنوات. في مجموعة الاختبار، حصلت على 62.2% أعلى 1 و84.2% أعلى 5. لسوء الحظ، هذا لا يمكن مقارنته بالجدول 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
).