Spec-Zone.ru › TensorFlow

tf.compat.v1.nn.convolution

Вычисляет сумму N-мерных свёртки (на самом деле кросс-корреляции).

tf.compat.v1.nn.convolution(
    input,
    filter,
    padding,
    strides=None,
    dilation_rate=None,
    name=None,
    data_format=None,
    filters=None,
    dilations=None
)

Это также поддерживает либо шаги вывода через необязательный параметр strides, либо атропную свёртку (также известную как свёртка с отверстиями или расширенная свёртка, основанная на французском слове "trous", означающем отверстия на английском языке) через необязательный параметр dilation_rate. Однако в настоящее время шаги вывода не поддерживаются для атропных свёртки.

В частности, в случае, если data_format не начинается с "NC", учитывая ранг (N+2) input тензор формы

[количество_парт, пространственная_форма_ввода[0], ..., пространственная_форма_ввода[N-1], количество_каналов_ввода],

тензор ранга (N+2) filter формы

[форма_пространственного_фильтра[0], ..., форма_пространственного_фильтра[N-1], количество_каналов_ввода, количество_каналов_вывода],

необязательный dilation_rate тензор формы N (по умолчанию [1]*N) определяющий скорость повышения/понижения выборки фильтра, и необязательный список N strides (по умолчанию [1]*N), это вычисляет для каждой N-мерной пространственной позиции вывода (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]

где b - индекс в пакет, k - номер канала вывода, q - номер канала ввода, и z - N-мерное смещение внутри фильтра. Здесь padded_input получается путем заполнения нулями ввода с использованием эффективной пространственной формы фильтра (spatial_filter_shape-1) * dilation_rate + 1 и шагом вывода strides.

В случае, если data_format начинается с "NC", input и вывод (но не filter) просто транспонируются следующим образом:

convolution(input, data_format, **kwargs) =
  tf.transpose(convolution(tf.transpose(input, [0] + range(2,N+2) + [1]),
                           **kwargs),
               [0, N+1] + range(1, N+1))

Требуется, чтобы 1 <= N <= 3.

Аргументы
input (N+2)-мерный Tensor типа T, формы [batch_size] + input_spatial_shape + [in_channels], если data_format не начинается с "NC" (по умолчанию), или [batch_size, in_channels] + input_spatial_shape, если data_format начинается с "NC".
filter (N+2)-мерный Tensor с тем же типом, что и у input, и формой spatial_filter_shape + [in_channels, out_channels].
padding Строка, либо "VALID", либо "SAME". Алгоритм заполнения. "valid" означает отсутствие заполнения. "same" приводит к равномерному дополнению слева/справа или сверху/снизу ввода таким образом, чтобы вывод имел ту же высоту/ширину, что и ввод, когда шаги равны 1. Более подробная информация представлена здесь.
strides Необязательно. Последовательность N целых чисел >= 1. Определяет шаг вывода. По умолчанию [1]*N. Если какое-либо значение шагов > 1, то все значения скорости расширения должны быть 1.
dilation_rate Необязательно. Последовательность N целых чисел >= 1. Определяет скорость повышения/понижения выборки фильтра/ввода. В литературе тот же параметр иногда называется input stride или dilation. Эффективный размер фильтра, используемый для свёртки, будет spatial_filter_shape + (spatial_filter_shape - 1) * (rate - 1), полученный путём вставки (dilation_rate[i]-1) нулей между последовательными элементами исходного фильтра в каждой пространственной размерности i. Если любое значение dilation_rate > 1, то все значения шагов должны быть 1.
name Необязательное имя возвращаемого тензора.
data_format Строка или None. Указывает, является ли размерность канала input и вывода последней размерностью (по умолчанию, или если data_format не начинается с "NC"), или второй размерностью (если data_format начинается с "NC"). Для N=1 допустимые значения — "NWC" (по умолчанию) и "NCW". Для N=2 допустимые значения — "NHWC" (по умолчанию) и "NCHW". Для N=3 допустимые значения — "NDHWC" (по умолчанию) и "NCDHW".
Возвращает
A Tensor с тем же типом, что и input, с формой
`[batch_size] + output_spatial_shape + [out_channels]`

если data_format равно None или не начинается с "NC", или

`[batch_size, out_channels] + output_spatial_shape`

если data_format начинается с "NC", где output_spatial_shape зависит от значения padding.

Если padding == "SAME": output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides[i])

Если padding == "VALID": output_spatial_shape[i] = ceil((input_spatial_shape[i] - (spatial_filter_shape[i]-1) * dilation_rate[i]) / strides[i]).

Исключения
ValueError Если глубина ввода/вывода не совпадает с формой filter, если padding отличается от "VALID" или "SAME", или если data_format недействителен.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/convolution

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API