Quel est le concept des goulots d'étranglement Tensorflow?

13

Quel est le concept et comment calcule-t-on les valeurs de goulot d'étranglement? Comment ces valeurs aident-elles à la classification des images? Veuillez expliquer en termes simples.

Anurag Singh
la source

Réponses:

20

Le goulot d'étranglement dans un réseau de neurones est juste une couche avec moins de neurones que la couche en dessous ou au-dessus. Le fait d'avoir une telle couche encourage le réseau à compresser les représentations d'entités pour s'adapter au mieux à l'espace disponible, afin d'obtenir la meilleure perte pendant l'entraînement.

Dans un CNN (tel que le réseau Inception de Google), des couches de goulot d'étranglement sont ajoutées pour réduire le nombre de cartes d'entités (alias "canaux") dans le réseau, qui autrement ont tendance à augmenter dans chaque couche. Ceci est réalisé en utilisant des convolutions 1x1 avec moins de canaux de sortie que les canaux d'entrée.

Généralement, vous ne calculez pas directement les poids pour les couches de goulot d'étranglement, le processus de formation gère cela, comme pour tous les autres poids. La sélection d'une bonne taille pour une couche de goulot d'étranglement est quelque chose que vous devez deviner, puis expérimenter, afin de trouver des architectures de réseau qui fonctionnent bien. Le but ici est généralement de trouver un réseau qui se généralise bien aux nouvelles images, et les couches de goulot d'étranglement aident en réduisant le nombre de paramètres dans le réseau tout en lui permettant d'être profond et de représenter de nombreuses cartes d'entités.

Neil Slater
la source
8

Imaginez, vous souhaitez recalculer la dernière couche d'un modèle pré-formé:

Input->[Freezed-Layers]->[Last-Layer-To-Re-Compute]->Output

Pour former [Last-Layer-To-Re-Compute] , vous devez évaluer les sorties de [Freezed-Layers] plusieurs fois pour des données d'entrée données. Afin de gagner du temps, vous ne pouvez calculer ces sorties qu'une seule fois .

Input#1->[Freezed-Layers]->Bottleneck-Features-Of-Input#1

Ensuite, vous stockez toutes les fonctionnalités de goulot d'étranglement de l'entrée # i et les utilisez directement pour former [Last-Layer-To-Re-Compute].

Explications de la fonction "cache_bottlenecks" de l'exemple "image_retraining":

Parce que nous sommes susceptibles de lire la même image plusieurs fois (s'il n'y a pas de distorsions appliquées pendant la formation), cela peut accélérer considérablement les choses si nous calculons les valeurs de la couche de goulot d'étranglement une fois pour chaque image pendant le prétraitement, puis lisons simplement ces valeurs mises en cache à plusieurs reprises pendant la formation.

JC R
la source
5

Le goulot d'étranglement Tensorflow est la dernière phase de pré-évaluation avant le début de la formation avec reconnaissance des données. C'est une phase où une structure de données est formée à partir de chaque image de formation que la phase finale de la formation peut avoir lieu et distinguer l'image de toutes les autres images utilisées dans le matériel de formation. Un peu comme une empreinte digitale de l'image.

Il est impliqué dans la commande de re-formation et comme son nom l'indique, c'est le principal consommateur de temps de l'exécution de la commande. La quantité de matériel de formation devra peut-être être compromise si ce goulot d'étranglement semble prendre trop de temps.

Comme il s'agit d'une commande en ligne de commande, je ne connais pas l'algorithme exact. L'algorithme est public dans le code dans Github mais est supposé si compliqué (le temps d'exécution est très long par définition) que je pense que je ne peux pas simplement l'écrire dans ce type de réponse.

mico
la source