ممارسة على CIFAR100 باستخدام Pytorch
هذه تجربتي eviroument
$ cd pytorch-cifar100سأستخدم مجموعة بيانات CIFAR100 من TorchVision لأنها أكثر ملاءمة ، لكنني أيضًا احتفظت برمز نموذج لكتابة وحدة مجموعة البيانات الخاصة بك في مجلد مجموعة البيانات ، كمثال على الأشخاص لا يعرفون كيفية كتابته.
تثبيت Tensorboard
$ pip install tensorboard
$ mkdir runs
Run tensorboard
$ tensorboard --logdir= ' runs ' --port=6006 --host= ' localhost 'تحتاج إلى تحديد الشبكة التي تريد تدريبها باستخدام ARG -NET
# use gpu to train vgg16
$ python train.py -net vgg16 -gpu في بعض الأحيان ، قد ترغب في استخدام تدريب الاحماء عن طريق -warm إلى 1 أو 2 ، لمنع انحراف الشبكة خلال مرحلة التدريب المبكرة.
الصافي المدعوم هي:
squeezenet
mobilenet
mobilenetv2
shufflenet
shufflenetv2
vgg11
vgg13
vgg16
vgg19
densenet121
densenet161
densenet201
googlenet
inceptionv3
inceptionv4
inceptionresnetv2
xception
resnet18
resnet34
resnet50
resnet101
resnet152
preactresnet18
preactresnet34
preactresnet50
preactresnet101
preactresnet152
resnext50
resnext101
resnext152
attention56
attention92
seresnet18
seresnet34
seresnet50
seresnet101
seresnet152
nasnet
wideresnet
stochasticdepth18
stochasticdepth34
stochasticdepth50
stochasticdepth101
عادة ، سيتم كتابة ملف الأوزان مع أفضل دقة على القرص مع لاحقة الاسم "الأفضل" (الافتراضي في مجلد نقطة التفتيش).
اختبار النموذج باستخدام test.py
$ python test.py -net vgg16 -weights path_to_vgg16_weights_fileلم أستخدم أي حيل تدريبية لتحسين Accuray ، إذا كنت ترغب في معرفة المزيد عن الحيل التدريبية ، يرجى الرجوع إلى ريبو آخر ، يحتوي على العديد من الحيل التدريبية المشتركة وتطبيقات Pytorch الخاصة بهم.
أتابع إعدادات الفائقة المفرطة في الورق المحسّنة في تنظيم الشبكات العصبية التلافيفية مع قطع ، والتي هي init lr = 0.1 قسمة على 5 في 60 ، 120 ، 160 عصر ، تدريب على 200 عصر مع دفع 128 و Deight Decay 5e-4 ، Nesterov الزخم 0.9. يمكنك أيضًا استخدام أجهزة التحكم المفرطة في تنظيم الشبكات العصبية من خلال معاقبة توزيعات الإخراج الواثقة وزيادة بيانات المسح العشوائي ، وهو LR الأولي = 0.1 ، LR تم تراجعه بمقدار 10 في الحصر 150 و 225 ، والتدريب على 300 عصر مع تحجيم 128 ، ويتم استخدام هذا بشكل أكثر شائعة. هل يمكن أن تفسد الحجم إلى 64 أو أيا كان يناسبك ، إذا لم يكن لديك ذاكرة GPU كافية.
يمكنك اختيار ما إذا كنت تريد استخدام Tensorboard لتصور إجراء التدريب الخاص بك
النتيجة التي يمكنني الحصول عليها من نموذج معين ، لأنني أستخدم نفس المقاييس المفرطة لتدريب جميع الشبكات ، قد لا تحصل بعض الشبكات على أفضل نتيجة من هذه المقاييس المفرطة ، يمكنك تجربة نفسك من خلال التمسك بفرط البراري للحصول على نتيجة أفضل.
| مجموعة البيانات | شبكة | params | Top1 err | TOP5 خطأ | عصر (LR = 0.1) | عصر (LR = 0.02) | عصر (LR = 0.004) | عصر (LR = 0.0008) | إجمالي الحقبة |
|---|---|---|---|---|---|---|---|---|---|
| CIFAR100 | Mobilenet | 3.3m | 34.02 | 10.56 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | mobilenetv2 | 2.36m | 31.92 | 09.02 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | القوسنيت | 0.78 م | 30.59 | 8.36 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Shufflenet | 1.0m | 29.94 | 8.35 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Shufflenetv2 | 1.3m | 30.49 | 8.49 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG11_BN | 28.5 م | 31.36 | 11.85 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG13_BN | 28.7 م | 28.00 | 9.71 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG16_BN | 34.0m | 27.07 | 8.84 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG19_BN | 39.0m | 27.77 | 8.84 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | RESNET18 | 11.2 م | 24.39 | 6.95 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnet34 | 21.3m | 23.24 | 6.63 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | RESNET50 | 23.7 م | 22.61 | 6.04 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | RESNET101 | 42.7m | 22.22 | 5.61 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | RESNET152 | 58.3M | 22.31 | 5.81 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | preactresnet18 | 11.3 م | 27.08 | 8.53 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | preactresnet34 | 21.5m | 24.79 | 7.68 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | preactresnet50 | 23.9m | 25.73 | 8.15 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | preactresnet101 | 42.9m | 24.84 | 7.83 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | preactresnet152 | 58.6 م | 22.71 | 6.62 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | RESNEXT50 | 14.8 م | 22.23 | 6.00 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | RESNEXT101 | 25.3 م | 22.22 | 5.99 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | RESNEXT152 | 33.3m | 22.40 | 5.58 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | انتباه 59 | 55.7m | 33.75 | 12.90 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | انتباه 92 | 102.5m | 36.52 | 11.47 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Densenet121 | 7.0m | 22.99 | 6.45 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Densenet161 | 26 م | 21.56 | 6.04 | 60 | 60 | 60 | 40 | 200 |
| CIFAR100 | Densenet201 | 18 م | 21.46 | 5.9 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | googlenet | 6.2m | 21.97 | 5.94 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | InceptionV3 | 22.3 م | 22.81 | 6.39 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | InceptionV4 | 41.3M | 24.14 | 6.90 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | InceptionResnetv2 | 65.4m | 27.51 | 9.11 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Xception | 21.0 م | 25.07 | 7.32 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Seresnet18 | 11.4 م | 23.56 | 6.68 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Seresnet34 | 21.6 م | 22.07 | 6.12 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Seresnet50 | 26.5m | 21.42 | 5.58 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Seresnet101 | 47.7 م | 20.98 | 5.41 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Seresnet152 | 66.2 م | 20.66 | 5.19 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | nasnet | 5.2m | 22.71 | 5.91 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Wideresnet-40-10 | 55.9m | 21.25 | 5.77 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | StochasticDepth18 | 11.22 م | 31.40 | 8.84 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | StochasticDepth34 | 21.36 م | 27.72 | 7.32 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | StochasticDepth50 | 23.71m | 23.35 | 5.76 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | StochasticDepth101 | 42.69m | 21.28 | 5.39 | 60 | 60 | 40 | 40 | 200 |