tf.nn.convolution
Вычисляет суммы N-мерных свёртки (фактически кросс-корреляции).
tf.nn.convolution(
input,
filters,
strides=None,
padding='VALID',
data_format=None,
dilations=None,
name=None
)
Используется в блокнотах
| Используется в учебных пособиях |
|---|
Это также поддерживает либо строку вывода с помощью необязательного параметра strides, либо атроусную свёртку (также известную как свёртка с отверстиями или расширенная свёртка, на основе французского слова «trous», означающего отверстия на английском языке) с помощью необязательного параметра dilations. Однако в настоящее время строка вывода не поддерживается для атроусных свёрток.
Конкретно, в случае, если data_format не начинается с "NC", для тензора ранга (N+2) input формы
[число_пакетов, пространственная_форма_входа[0], ..., пространственная_форма_входа[N-1], число_каналов_входа],
тензора ранга (N+2) filters формы
[форма_пространственного_фильтра[0], ..., форма_пространственного_фильтра[N-1], число_каналов_входа, число_каналов_выхода],
необязательного тензора dilations формы 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 и выход (но не filters) просто транспонируются следующим образом:
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". |
filters | (N+2)-мерный Tensor с тем же типом, что и input, и формой spatial_filter_shape + [in_channels, out_channels]. |
padding | Строка, либо "VALID", либо "SAME". Алгоритм заполнения. "valid" означает отсутствие заполнения. "same" приводит к равномерному дополнению слева/справа или сверху/снизу входных данных таким образом, чтобы размер вывода по высоте/ширине совпадал с размером входных данных, когда шаги равны 1. Смотрите здесь для получения дополнительной информации. |
strides | Необязательно. Последовательность N целых чисел ≥ 1. Задает шаг вывода. По умолчанию [1]*N. Если какое-либо значение шага > 1, то все значения скорости расширения должны быть равны 1. |
dilations | Необязательно. Последовательность N целых чисел ≥ 1. Задает скорость увеличения/уменьшения размера фильтра/скорость уменьшения входных данных. В литературе тот же параметр иногда называют input stride или dilation. Эффективный размер фильтра, используемый для свёртки, будет spatial_filter_shape + (spatial_filter_shape - 1) * (rate - 1), полученный путём вставки (dilation_rate[i]-1) нулей между последовательными элементами исходного фильтра в каждом пространственном измерении i. Если какое-либо значение скорости расширения > 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". |
| Возвращаемое значение | |
|---|---|
Tensor с тем же типом, что и input, формы
`[batch_size] + output_spatial_shape + [out_channels]` если data_format равно None или не начинается с "NC", или `[batch_size, out_channels] + output_spatial_shape` если 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]). |
| Исключения | |
|---|---|
ValueError | Если глубина входа/выхода не соответствует форме filters, если 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/nn/convolution