Spec-Zone.ru › TensorFlow 2.4

tf.nn.depthwise_conv2d

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

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

tf.nn.depthwise_conv2d(
    input, filter, strides, padding, data_format=None, dilations=None, name=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.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", указывающей тип алгоритма заполнения, или списком, указывающим явное заполнение в начале и конце каждого измерения. Когда используется явное заполнение и 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 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.4/api_docs/python/tf/nn/depthwise_conv2d

Spec-Zone.ru

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