Spec-Zone.ru › TensorFlow 2.3

tf.nn.depthwise_conv2d

Просмотреть исходный код на GitHub

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

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 + 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.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 4-мерный тензор с формой согласно data_format.
filter 4-мерный тензор с формой [filter_height, filter_width, in_channels, channel_multiplier].
strides 1-мерный тензор размера 4. Шаг скользящего окна для каждого измерения input.
padding Управляет тем, как обводить изображение перед применением свёртки. Может быть строкой "SAME" или "VALID", указывающей на тип алгоритма обводки, или списком, указывающим явную обводку в начале и конце каждого измерения. При использовании явной обводки и формате данных "NHWC", это должно быть в форме [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]]. При использовании явной обводки и формате данных "NCHW", это должно быть в форме [[0, 0], [0, 0], [pad_top, pad_bottom], [pad_left, pad_right]].
data_format Формат данных на входе. Либо "NHWC" (по умолчанию), либо "NCHW".
dilations 1-мерный тензор размера 2. Скорость атропии, с которой мы выбираем значения входных данных по измерениям height и width в свёртке с атропией. Если она больше 1, то все значения шагов должны быть 1.
name Имя для данной операции (необязательно).
Возвращаемые значения
4-мерный Tensor тензор с формой согласно data_format. Например, для формата "NHWC", форма [batch, out_height, out_width, in_channels * channel_multiplier].

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

Spec-Zone.ru

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