Entraînez-vous sur CIFAR100 en utilisant Pytorch
C'est mon expérience eviroument
$ cd pytorch-cifar100J'utiliserai un ensemble de données CIFAR100 à partir de TorchVision car il est plus pratique, mais j'ai également gardé l'exemple de code pour écrire votre propre module de jeu de données dans le dossier de l'ensemble de données, par exemple pour les gens qui ne savent pas comment l'écrire.
Installer Tensorboard
$ pip install tensorboard
$ mkdir runs
Run tensorboard
$ tensorboard --logdir= ' runs ' --port=6006 --host= ' localhost 'Vous devez spécifier le filet que vous souhaitez vous entraîner à l'aide d'arg -net
# use gpu to train vgg16
$ python train.py -net vgg16 -gpu Parfois, vous voudrez peut-être utiliser l'entraînement d'échauffement par Set -warm à 1 ou 2, pour éviter que le réseau diverge pendant la phase d'entraînement précoce.
Les args nets pris en charge sont:
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
Normalement, le fichier de poids avec la meilleure précision serait écrit sur le disque avec le suffixe de nom «meilleur» (par défaut dans le dossier de point de contrôle).
Testez le modèle à l'aide de test.py
$ python test.py -net vgg16 -weights path_to_vgg16_weights_fileJe n'ai utilisé aucune astuce de formation pour améliorer la précision, si vous voulez en savoir plus sur les astuces de formation, veuillez vous référer à mon autre référentiel, contient divers astuces de formation courantes et leurs implémentations Pytorch.
Je suis les paramètres d'hyperparamètre dans le papier régularisation améliorée des réseaux de neurones convolutionnels avec découpe, qui est init lr = 0,1 diviser par 5 à 60e, 120e, 160e époques, m'entraîner pour 200 époques avec un lot 128 et la décomposition de poids 5e-4, neterov Moontum de 0,9. Vous pouvez également utiliser les hyperparamètres du papier régularisant les réseaux de neurones en pénalisant les distributions de sortie confiantes et en augmentation des données d'effacement aléatoire, qui est le LR initial = 0,1, LR divisé par 10 à 150e et 225e époques, et une formation pour 300 époques avec lot de lots 128, celle-ci est plus couramment utilisée. Vous pouvez diminuer le lot à 64 ou tout ce qui vous convient, si vous n'avez pas assez de mémoire GPU.
Vous pouvez choisir d'utiliser Tensorboard pour visualiser votre procédure de formation
Le résultat que je peux obtenir d'un certain modèle, puisque j'utilise les mêmes hyperparamètres pour former tous les réseaux, certains réseaux pourraient ne pas obtenir le meilleur résultat de ces hyperparamètres, vous pourriez essayer vous-même en mettant en œuvre les hyperparamètres pour obtenir un meilleur résultat.
| ensemble de données | réseau | paramètres | top1 err | top5 err | époque (LR = 0,1) | époque (LR = 0,02) | époque (LR = 0,004) | époque (LR = 0,0008) | époque totale |
|---|---|---|---|---|---|---|---|---|---|
| CIFAR100 | mobilenet | 3,3 m | 34.02 | 10.56 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | mobilenetv2 | 2,36 m | 31.92 | 09.02 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | serrer | 0,78 m | 30.59 | 8.36 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | shufflenet | 1,0 m | 29.94 | 8.35 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | shufflenetv2 | 1,3 m | 30.49 | 8.49 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG11_BN | 28,5 m | 31.36 | 11.85 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG13_BN | 28,7 m | 28h00 | 9.71 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG16_BN | 34,0 m | 27.07 | 8.84 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | VGG19_BN | 39,0 m | 27.77 | 8.84 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnet18 | 11.2m | 24.39 | 6.95 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnet34 | 21,3 m | 23.24 | 6.63 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnet50 | 23,7 m | 22.61 | 6.04 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnet101 | 42,7 m | 22.22 | 5.61 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnet152 | 58,3 m | 22.31 | 5.81 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | PreactesNet18 | 11.3m | 27.08 | 8.53 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | PreactesNet34 | 21,5 m | 24.79 | 7.68 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | PreactesNet50 | 23,9 m | 25.73 | 8.15 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | PreactesNet101 | 42,9 m | 24.84 | 7.83 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | PreactesNet152 | 58,6 m | 22.71 | 6.62 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnext50 | 14,8 m | 22.23 | 6.00 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnext101 | 25,3m | 22.22 | 5.99 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | resnext152 | 33,3 m | 22.40 | 5.58 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | attention59 | 55,7 m | 33,75 | 12.90 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Attention 92 | 102,5 m | 36,52 | 11.47 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | densenet121 | 7,0 m | 22.99 | 6.45 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | densenet161 | 26m | 21.56 | 6.04 | 60 | 60 | 60 | 40 | 200 |
| CIFAR100 | densenet201 | 18m | 21.46 | 5.9 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | googlenet | 6,2 m | 21.97 | 5.94 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Inceptionv3 | 22,3m | 22.81 | 6.39 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Inceptionv4 | 41,3 m | 24.14 | 6.90 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | INCECK RESRESNETV2 | 65,4 m | 27.51 | 9.11 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | xception | 21.0m | 25.07 | 7.32 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | seresnet18 | 11.4m | 23.56 | 6.68 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | seresnet34 | 21,6 m | 22.07 | 6.12 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | seresnet50 | 26,5 m | 21.42 | 5.58 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | seresnet101 | 47,7m | 20.98 | 5.41 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | seresnet152 | 66,2 m | 20.66 | 5.19 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | nasnet | 5,2 m | 22.71 | 5.91 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | Wideresnet-40-10 | 55,9 m | 21.25 | 5.77 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | StochasticDepth18 | 11.22M | 31.40 | 8.84 | 60 | 60 | 40 | 40 | 200 |
| CIFAR100 | stochasticDepth34 | 21.36m | 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 |