231 votes

Commande de normalisation de lot et d’abandon dans TensorFlow?

Lors de l'utilisation de la normalisation de lots et de l'abandon TensorFlow (plus précisément à l'aide de la contrib.couches) ai-je besoin d'être inquiet au sujet de la commande?

Il semble possible que si j'utilise l'abandon suivie immédiatement par la normalisation de lots il y a peut-être des ennuis. Par exemple, si le passage dans le lot normalisation des trains à l'échelle plus large des numéros de la formation de sorties, mais alors ce changement est appliqué à la plus petite (en raison de la compensation pour avoir plus de sorties) chiffres de l'échelle, sans abandon pendant les essais, alors que la maj est peut-être éteint. Le TensorFlow lot de normalisation de la couche de compenser automatiquement pour cela? Ou n'est-ce pas se produire pour une raison que je suis absent?

Aussi, existe-il d'autres pièges à regarder dehors pour dans lors de l'utilisation de ces deux ensemble? Par exemple, en supposant que je suis en utilisant dans l'ordre correct, en ce qui concerne la ci-dessus (en supposant qu'il est un bon ordre), pourrait-il y avoir de la difficulté avec l'utilisation de deux lots de normalisation et d'abandon sur plusieurs couches successives? Je n'ai pas immédiatement voir un problème avec ça, mais j'ai peut-être raté quelque chose.

Merci beaucoup!

Mise à JOUR:

Un test expérimental semble suggérer que la commande n'a d'importance. J'ai couru le même réseau deux fois avec seulement le lot de norme et d'abandon inverse. Lors de l'abandon scolaire est avant que le lot de norme, de la validation de la perte semble être à la hausse comme à la formation de la perte est à la baisse. Ils sont en train de descendre dans les autres cas. Mais dans mon cas, les mouvements sont lents, donc les choses peuvent changer après plus de formation et il suffit d'un seul test. Un plus définitif et informé de la réponse sera appréciée.

238voto

Zhongyu Kuang Points 2665

Dans le Ioffe et Szegedy 2015, les auteurs affirment que "nous aimerions nous assurer que, pour toutes les valeurs de paramètre, le réseau a toujours produit des activations avec la distribution désirée". Donc, le Lot de Normalisation de la Couche est en fait insérée juste après une Conv Couche/Entièrement Connecté Couche, mais avant de le nourrir dans ReLu (ou de tout autre type d'activation. Voir cette vidéo autour de l'heure 53 min pour plus de détails.

Aussi loin que le décrochage va, je crois abandon scolaire est appliquée après l'activation de la couche. Dans l' abandon de papier à la figure 3b, le décrochage/facteur de probabilité de la matrice r(l) pour la couche cachée l est appliqué sur y(l), où y(l) est le résultat après l'application de l'activation de la fonction f.

Donc en résumé, l'ordre de l'utilisation des lots de normalisation et d'abandon est:

-> CONV/FC -> BatchNorm -> ReLu(ou d'autres d'activation) -> suppression de> CONV/FC ->

66voto

MiloMinderbinder Points 608

Comme indiqué dans les commentaires, une ressource incroyable de lire sur l'ordre des couches est ici. Je suis allé à travers les commentaires et c'est la meilleure ressource sur le sujet que j'ai trouvé sur internet

Mes 2 cents:

D'abandon scolaire est destinée à bloquer l'information à partir de certains neurones complètement à assurez-vous que les neurones ne sont pas co-adapter. Donc, le lot de normalisation doit être après l'abandon sinon, à vous transmettre des informations par le biais de la normalisation des statistiques.

Si vous pensez à ce sujet, dans le typique ML problèmes, c'est la raison pour laquelle nous ne pas calculer la moyenne et l'écart-type sur l'ensemble de données, puis de le diviser en train, de test et de validation des ensembles. Nous nous sommes séparés et ensuite calculer les statistiques sur le train et les utiliser pour normaliser et le centre de la validation et de test de jeux de données

je suggère donc de Régime 1 (Cela prend pseudomarvin de commenter accepté de répondre en considération)

-> CONV/FC -> ReLu(ou d'autres d'activation) -> suppression de> BatchNorm -> CONV/FC

contrairement au Schéma 2

-> CONV/FC -> BatchNorm -> ReLu(ou d'autres d'activation) -> suppression de> CONV/FC -> dans la accepté de répondre à

Veuillez noter que cela signifie que le réseau selon le Schéma 2, devrait montrer sur-ajustement par rapport au réseau selon le Schéma 1, mais l'OP couru quelques tests mentionné dans la question, et ils soutiennent Schéma 2

28voto

xtluo Points 871

Généralement, il suffit de déposer l' Dropout(lorsque vous avez BN):

  • "BN élimine le besoin d' Dropout dans certains cas, provoquer BN offre similaire à la régularisation des avantages que le Décrochage intuitivement"
  • "Architectures comme ResNet, DenseNet, etc. ne pas utiliser Dropout

Pour plus de détails, se référer à cet article [la Compréhension de la Dysharmonie entre le Décrochage et la Normalisation de Lots par la Variance Maj] comme déjà mentionné par @Haramoz dans les commentaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X