РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
737 of 824 menu

Функция nn.atrous_conv2d

Функция nn.atrous_conv2d применяет двумерный фильтр к входному тензору с заданным шагом дилатации. Первым параметром передается входной тензор формы [batch, height, width, channels]. Вторым параметром передается фильтр формы [filter_height, filter_width, in_channels, out_channels]. Третьим параметром задается коэффициент дилатации rate. Четвертым - тип паддинга padding. Пятым - шаг свертки strides.

Синтаксис

tf.nn.atrous_conv2d(value, filters, rate, padding, [strides])

Пример

Давайте выполним атроусную свертку над входным тензором с коэффициентом дилатации 2 и паддингом SAME:

import tensorflow as tf # input tensor: batch=1, height=5, width=5, channels=1 t = tf.constant([[[[1.0], [2.0], [3.0], [4.0], [5.0]], [[6.0], [7.0], [8.0], [9.0], [10.0]], [[11.0], [12.0], [13.0], [14.0], [15.0]], [[16.0], [17.0], [18.0], [19.0], [20.0]], [[21.0], [22.0], [23.0], [24.0], [25.0]]]]) # filter: height=3, width=3, in_channels=1, out_channels=1 filters = tf.constant([[[[1.0]], [[0.0]], [[-1.0]]], [[[1.0]], [[0.0]], [[-1.0]]], [[[1.0]], [[0.0]], [[-1.0]]]]) res = tf.nn.atrous_conv2d(t, filters, rate=2, padding='SAME') print(res)

Результат выполнения кода:

tf.Tensor( [[[[-12.] [-18.] [-18.] [-18.] [-12.]] [[-42.] [-48.] [-48.] [-48.] [-42.]] [[-42.] [-48.] [-48.] [-48.] [-42.]] [[-42.] [-48.] [-48.] [-48.] [-42.]] [[-12.] [-18.] [-18.] [-18.] [-12.]]]], shape=(1, 5, 5, 1), dtype=float32)

Пример

Давайте выполним атроусную свертку с паддингом VALID и другим фильтром:

import tensorflow as tf # input tensor: batch=1, height=7, width=7, channels=1 t = tf.constant([[[[1.0], [2.0], [3.0], [4.0], [5.0], [6.0], [7.0]], [[8.0], [9.0], [10.0], [11.0], [12.0], [13.0], [14.0]], [[15.0], [16.0], [17.0], [18.0], [19.0], [20.0], [21.0]], [[22.0], [23.0], [24.0], [25.0], [26.0], [27.0], [28.0]], [[29.0], [30.0], [31.0], [32.0], [33.0], [34.0], [35.0]], [[36.0], [37.0], [38.0], [39.0], [40.0], [41.0], [42.0]], [[43.0], [44.0], [45.0], [46.0], [47.0], [48.0], [49.0]]]]) # filter: height=3, width=3, in_channels=1, out_channels=1 filters = tf.constant([[[[1.0]], [[1.0]], [[1.0]]], [[[1.0]], [[1.0]], [[1.0]]], [[[1.0]], [[1.0]], [[1.0]]]]) res = tf.nn.atrous_conv2d(t, filters, rate=1, padding='VALID') print(res)

Результат выполнения кода:

tf.Tensor( [[[[117.] [126.] [135.] [144.] [153.]] [[162.] [171.] [180.] [189.] [198.]] [[207.] [216.] [225.] [234.] [243.]] [[252.] [261.] [270.] [279.] [288.]] [[297.] [306.] [315.] [324.] [333.]]]], shape=(1, 5, 5, 1), dtype=float32)

Пример

Давайте выполним атроусную свертку с несколькими выходными каналами:

import tensorflow as tf # input tensor: batch=1, height=5, width=5, channels=1 t = tf.constant([[[[1.0], [2.0], [3.0], [4.0], [5.0]], [[6.0], [7.0], [8.0], [9.0], [10.0]], [[11.0], [12.0], [13.0], [14.0], [15.0]], [[16.0], [17.0], [18.0], [19.0], [20.0]], [[21.0], [22.0], [23.0], [24.0], [25.0]]]]) # filter: height=2, width=2, in_channels=1, out_channels=2 filters = tf.constant([[[[1.0, 0.5]], [[-1.0, 0.5]]], [[[1.0, -0.5]], [[-1.0, -0.5]]]]) res = tf.nn.atrous_conv2d(t, filters, rate=1, padding='VALID') print(res)

Результат выполнения кода:

tf.Tensor( [[[[ 0. 19. ] [ 0. 21. ] [ 0. 23. ] [ 0. 25. ]] [[ 0. 39. ] [ 0. 41. ] [ 0. 43. ] [ 0. 45. ]] [[ 0. 59. ] [ 0. 61. ] [ 0. 63. ] [ 0. 65. ]] [[ 0. 79. ] [ 0. 81. ] [ 0. 83. ] [ 0. 85. ]]]], shape=(1, 4, 4, 2), dtype=float32)

Смотрите также

  • функцию conv2d,
    которая выполняет обычную двумерную свертку
  • функцию dilation2d,
    которая выполняет морфологическую дилатацию
  • функцию depthwise_conv2d,
    которая выполняет глубинную свертку
  • функцию separable_conv2d,
    которая выполняет разделяемую свертку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить