Spec-Zone.ru › TensorFlow

tf.nn.depthwise_conv2d

Двумерная глубинная свёртка.

tf.nn.depthwise_conv2d(
    input,
    filter,
    strides,
    padding,
    data_format=None,
    dilations=None,
    name=None
)

Для входного тензора 4D («NHWC» или «NCHW») и тензора фильтров формы [filter_height, filter_width, in_channels, channel_multiplier], содержащего in_channels свёрточных фильтров глубины 1, depthwise_conv2d применяет отдельный фильтр к каждому входному каналу (расширяя его с 1 канала до channel_multiplier каналов для каждого), а затем объединяет результаты. Выходной тензор содержит in_channels * channel_multiplier каналов.

Подробно, для формата NHWC по умолчанию:

output[b, i, j, k * channel_multiplier + q] =
    sum_{di, dj} filter[di, dj, k, q] *
                 input[b, strides[1] * i + dilations[0] * di,
                          strides[2] * j + dilations[1] * dj, k]

Должно выполняться условие strides[0] = strides[3] = 1. Для наиболее распространённого случая одинакового шага по горизонтали и вертикали используйте strides = [1, stride, stride, 1]. Если какое-либо значение в dilations больше 1, выполняется атрусная глубинная свёртка; в этом случае все значения в тензоре strides должны быть равны 1.

Пример использования:

x = np.array([
    [1., 2.],
    [3., 4.],
    [5., 6.]
], dtype=np.float32).reshape((1, 3, 2, 1))
kernel = np.array([
    [1., 2.],
    [3., 4]
], dtype=np.float32).reshape((2, 1, 1, 2))
tf.nn.depthwise_conv2d(x, kernel, strides=[1, 1, 1, 1],
                       padding='VALID').numpy()
  array([[[[10., 14.],
           [14., 20.]],
          [[18., 26.],
           [22., 32.]]]], dtype=float32)
tf.nn.depthwise_conv2d(x, kernel, strides=[1, 1, 1, 1],
                       padding=[[0, 0], [1, 0], [1, 0], [0, 0]]).numpy()
  array([[[[ 0.,  0.],
           [ 3.,  4.],
           [ 6.,  8.]],
          [[ 0.,  0.],
           [10., 14.],
           [14., 20.]],
          [[ 0.,  0.],
           [18., 26.],
           [22., 32.]]]], dtype=float32)
Аргументы
input Тензор 4D с формой, соответствующей data_format.
filter Тензор 4D формы [filter_height, filter_width, in_channels, channel_multiplier].
strides Вектор 1D размера 4. Шаг скользящего окна для каждого измерения input.
padding Определяет способ добавления отступов к изображению перед применением свёртки. Может быть строкой "SAME" или "VALID", указывающей тип алгоритма добавления отступов, либо списком, задающим явные отступы в начале и конце каждого измерения. Подробнее см. здесь. При использовании явных отступов и data_format равном "NHWC", формат должен быть [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]]. При использовании явных отступов и data_format равном "NCHW", формат должен быть [[0, 0], [0, 0], [pad_top, pad_bottom], [pad_left, pad_right]].
data_format Формат входных данных. «NHWC» (по умолчанию) или «NCHW».
dilations Вектор 1D размера 2. Коэффициент разрежения, определяющий выборку входных значений по измерениям height и width при атрусной свёртке. Если он больше 1, все значения strides должны быть равны 1.
name Имя этой операции (необязательно).
Возвращает
Тензор 4D Tensor с формой, соответствующей data_format. Например, для формата «NHWC» форма имеет вид [batch, out_height, out_width, in_channels * channel_multiplier].

© 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/depthwise_conv2d

Spec-Zone.ru

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