Spec-Zone.ru › TensorFlow

tf.compat.v1.nn.depthwise_conv2d

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

tf.compat.v1.nn.depthwise_conv2d(
    input,
    filter,
    strides,
    padding,
    rate=None,
    name=None,
    data_format=None,
    dilations=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 + rate[0] * di,
                                     strides[2] * j + rate[1] * dj, k]

Должно быть strides[0] = strides[3] = 1. Для наиболее распространённого случая с одинаковыми горизонтальным и вертикальным шагами strides = [1, stride, stride, 1]. Если какое-либо значение в rate больше 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.compat.v1.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.compat.v1.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 Одномерный тензор размера 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]].
rate Одномерный тензор размера 2. Шаг разрежения, с которым выбираются входные значения вдоль измерений height и width при атрусной свёртке. Если он больше 1, все значения strides должны быть равны 1.
name Имя этой операции (необязательно).
data_format Формат данных входных данных. Либо "NHWC" (по умолчанию), либо "NCHW".
dilations Псевдоним rate.
Возвращаемое значение
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/compat/v1/nn/depthwise_conv2d

Spec-Zone.ru

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