Spec-Zone.ru › TensorFlow

tf.compat.v1.nn.depthwise_conv2d

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

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 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. Скорость расширения (dilation rate) при выборке значений входных данных по измерениям 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].

© 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