Spec-Zone.ru › TensorFlow 2.9

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].

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

Spec-Zone.ru

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