Cette page a été traduite par l'API Cloud Translation.
Switch to English

tf.nn.convolution

Tensorflow 1 Version Voir la source sur GitHub

Calcule sommes de circonvolutions ND (en fait de corrélation croisée).

Cela prend également en charge l' une des sorties à grandes enjambées par l'option strides paramètre ou convolution Atrous (également connu sous le nom convolution avec des trous ou convolution dilatée, sur la base du mot français qui signifie « trous » en anglais Trous) via le câble optionnel dilations paramètre. À l'heure actuelle, cependant, Franchir de sortie ne sont pas pris en charge pour convolutions Atrous.

Plus précisément, dans le cas où data_format ne commence pas par « NC », étant donné un rang (N + 2) d' input Tenseur de forme

[num_batches, input_spatial_shape [0], ..., input_spatial_shape [N-1], num_input_channels],

un rang (N + 2) filters Tenseur de forme

[spatial_filter_shape [0], ..., spatial_filter_shape [N-1], num_input_channels, num_output_channels],

en option dilations tenseur de forme N spécifiant le suréchantillonnage du filtre / input taux de sous - échantillonnage, et une liste facultative de N strides (défaut [1] * N), ce calcule pour chaque position de sortie spatiale ND (x [0], ..., x [N-1]):

   output[b, x[0], ..., x[N-1], k] =
      sum_{z[0], ..., z[N-1], q}
          filter[z[0], ..., z[N-1], q, k] *
          padded_input[b,
                       x[0]*strides[0] + dilation_rate[0]*z[0],
                       ...,
                       x[N-1]*strides[N-1] + dilation_rate[N-1]*z[N-1],
                       q]
 

où b est l'indice dans le lot, k est le numéro de canal de sortie, q est le nombre de canaux d'entrée, et z est le ND décalage spatial à l'intérieur du filtre. Ici, padded_input est obtenu par remplissage de zéros l'entrée en utilisant une forme de filtre spatiale effective (spatial_filter_shape-1) * dilation_rate + 1 et la sortie à grands pas strides comme décrit dans le commentaire ici .

Dans le cas où data_format ne démarre avec "NC" , l' input et de sortie (mais pas les filters ) sont simplement transposés comme suit:

convolution (entrée, data_format, kwargs **) = tf.transpose (convolution (tf.transpose (entrée, [0] + plage (2, N + 2) + [1]), ** kwargs), [0, N 1] + plage (1, N + 1))

Il est nécessaire que 1 <= N <= 3.

input Un (N + 2) -D Tensor de type T , de forme [batch_size] + input_spatial_shape + [in_channels] si data_format ne commence pas par "NC" (par défaut), ou [batch_size, in_channels] + input_spatial_shape si data_format commence par " NC".
filters Un (N + 2) -D Tensor avec le même type que l' input et la forme spatial_filter_shape + [in_channels, out_channels] .
padding Une chaîne, soit "VALID" ou "SAME" . L'algorithme de remplissage.
strides Optionnel. Séquence de N ints> = 1. Indique la stride de sortie. La valeur par défaut [1] * N. Si une valeur de progrès est> 1, toutes les valeurs de dilation_rate doivent être 1.
dilations Optionnel. Séquence de N ints> = 1. Indique le taux de sous-échantillonnage suréchantillonnage / entrée du filtre. Dans la littérature, le même paramètre est parfois appelé input stride ou de dilation . La taille de filtre efficace utilisé pour la convolution sera spatial_filter_shape + (spatial_filter_shape - 1) * (rate - 1) , obtenu par l' insertion (dilation_rate [i] -1) zéros entre les éléments consécutifs du filtre d' origine dans chaque dimension spatiale i. Si une valeur de dilation_rate est> 1, toutes les valeurs de progrès doivent être 1.
name Nom facultatif pour le tenseur retourné.
data_format Une chaîne ou None. Indique si la dimension du canal de l' input et la sortie est la dernière dimension (par défaut, ou si data_format ne commence pas par « NC »), ou la seconde dimension (si data_format commence avec « NC »). N = 1, les valeurs valides sont « North West Company » (par défaut) et « NCW ». N = 2, les valeurs valides sont "NHWC" (par défaut) et "NCHW". N = 3, les valeurs valides sont "NDHWC" (par défaut) et "NCDHW".

A Tensor avec le même type que l' input de forme

[batch_size] + output_spatial_shape + [out_channels]

si data_format est Aucun ou ne commence pas par « NC », ou

[batch_size, out_channels] + output_spatial_shape

si data_format commence par « NC », où output_spatial_shape dépend de la valeur de padding .

Si le rembourrage == "SAME": output_spatial_shape [i] = ceil (input_spatial_shape [i] / progrès [i])

Si le rembourrage == "VALIDE": output_spatial_shape [i] = Ceil ((input_spatial_shape [i] - (spatial_filter_shape [i] -1) * dilation_rate [i]) / progrès [i]).

ValueError Si la profondeur d' entrée / sortie ne correspond pas à des filters de forme, si le rembourrage est autre que "VALID" ou "SAME" , ou si data_format est invalide.