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 тензора формы
[num_batches, input_spatial_shape[0], ..., input_spatial_shape[N-1], num_input_channels],
ранг (N+2) filter тензора формы
[spatial_filter_shape[0], ..., spatial_filter_shape[N-1], num_input_channels, num_output_channels],
необязательный dilation_rate тензор формы 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.
| Args | |
|---|---|
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". Алгоритм заполнения. |
strides |
Необязательно. Последовательность из N целых чисел >= 1. Указывает шаг вывода. По умолчанию [1]*N. Если любое значение шага > 1, то все значения dilation_rate должны быть 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". |
| Returns | |
|---|---|
A Tensor с тем же типом, что и input формы
если data_format равен None или не начинается с "NC", или
если data_format начинается с "NC", где Если 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]). |
| Raises | |
|---|---|
ValueError |
Если глубина входных/выходных данных не совпадает с формой filter, если padding отличается от "VALID" или "SAME", или если data_format недействителен. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/compat/v1/nn/convolution