Spec-Zone.ru › TensorFlow

tf.nn.depthwise_conv2d

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

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 + dilations[0] * di,
                          strides[2] * j + dilations[1] * dj, k]

Должны выполняться условия strides[0] = strides[3] = 1. В наиболее частом случае одинаковых горизонтальных и вертикальных шагов, strides = [1, stride, stride, 1]. Если какое-либо значение в dilations больше 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].

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

Spec-Zone.ru

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