Spec-Zone.ru › TensorFlow 2.9

tf.compat.v1.nn.depthwise_conv2d

Свёртка по глубине 2-D.

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

Принимая 4-мерный тензор входных данных ('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, мы выполняем свёртку с пропусками (atrous), в этом случае все значения в тензоре 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 4-мерный с формой согласно data_format.
filter 4-мерный с формой [filter_height, filter_width, in_channels, channel_multiplier].
strides 1-мерный массив размера 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 1-мерный массив размера 2. Скорость пропуска в котором мы выбираем значения входных данных по размерностям height и width в свёртке с пропусками. Если она больше 1, то все значения шагов должны быть 1.
name Имя этой операции (необязательно).
data_format Формат данных для входных данных. Либо "NHWC" (по умолчанию), либо "NCHW".
dilations Псевдоним для rate.
Возвращаемое значение
4-мерный 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/versions/r2.9/api_docs/python/tf/compat/v1/nn/depthwise_conv2d

Spec-Zone.ru

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