Spec-Zone.ru › TensorFlow 2.4

tf.compat.v1.nn.depthwise_conv2d

Свёрточное преобразование глубины по 2 измерениям.

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, то мы выполняем свёртку с атропией по глубине, в этом случае все значения в тензоре 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, то все значения strides должны быть равны 1.
name Имя данной операции (необязательно).
data_format Формат данных для входа. Либо "NHWC" (по умолчанию), либо "NCHW".
dilations Псевдоним для rate.
Возвращаемое значение
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.4/api_docs/python/tf/compat/v1/nn/depthwise_conv2d

Spec-Zone.ru

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