[python] Tensorflow Strides Argument


0 Answers

Les entrées sont en 4 dimensions et sont de forme: [taille_bloc, image_rows, image_cols, number_of_colors]

Les foulées définissent en général un chevauchement entre les opérations d'application. Dans le cas de conv2d, il spécifie quelle est la distance entre les applications consécutives des filtres convolutifs. La valeur de 1 dans une dimension spécifique signifie que nous appliquons l'opérateur à chaque ligne / col, la valeur de 2 signifie toutes les secondes, et ainsi de suite.

Re 1) Les valeurs qui comptent pour les convolutions sont les 2ème et 3ème et représentent le chevauchement dans l'application des filtres convolutionnels le long des lignes et des colonnes. La valeur de [1, 2, 2, 1] indique que nous voulons appliquer les filtres sur chaque deuxième ligne et colonne.

Re 2) Je ne connais pas les limitations techniques (peut-être l'exigence CuDNN) mais généralement les gens utilisent des foulées le long des rangées ou des colonnes. Cela n'a pas forcément de sens de le faire par rapport à la taille du lot. Pas sûr de la dernière dimension.

Re 3) En définissant -1 pour l'un des moyens de dimension, "définir la valeur pour la première dimension de sorte que le nombre total d'éléments dans le tenseur soit inchangé". Dans notre cas, le -1 sera égal à batch_size.

Question

J'essaie de comprendre l'argument des foulées dans tf.nn.avg_pool, tf.nn.max_pool, tf.nn.conv2d.

La documentation dit à plusieurs reprises

strides: Une liste d'ints de longueur> = 4. La foulée de la fenêtre glissante pour chaque dimension du tenseur d'entrée.

Mes questions sont:

  1. Que représentent chacun des 4+ entiers?
  2. Pourquoi doivent-ils avoir des foulées [0] = foulées [3] = 1 pour les convnets?
  3. Dans cet exemple, nous voyons tf.reshape(_X,shape=[-1, 28, 28, 1]) . Pourquoi -1?

Malheureusement, les exemples dans les docs pour remodeler en utilisant -1 ne se traduisent pas trop bien dans ce scénario.




Related