Функция nn.dilation2d
Функция dilation2d из модуля tf.nn применяет операцию морфологической дилатации к входному тензору. Первым параметром передается входной тензор формы [batch, height, width, channels], вторым - тензор ядра (структурирующего элемента) формы [filter_height, filter_width, channels]. Третьим параметром передаются шаги скольжения окна strides, четвертым - тип дополнения padding (значения 'VALID' или 'SAME'). Дилатация вычисляет максимум суммы элементов входа и ядра в пределах окна.
Синтаксис
tf.nn.dilation2d(input, filter, strides, padding, data_format='NHWC', dilations=None, name=None)
Пример
Давайте применим дилатацию к простому тензору с одним каналом:
import tensorflow as tf
t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]]], dtype=tf.float32)
filter = tf.constant([[[0], [1], [0]], [[1], [1], [1]], [[0], [1], [0]]], dtype=tf.float32)
res = tf.nn.dilation2d(t, filter, strides=[1, 1, 1, 1], padding='VALID')
print(res)
Результат выполнения кода:
tf.Tensor([[[[8.]
[9.]]]], shape=(1, 1, 2, 1), dtype=float32)
Пример
Давайте применим дилатацию с дополнением 'SAME' и шагами [1, 2, 2, 1]:
import tensorflow as tf
t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]]], dtype=tf.float32)
filter = tf.constant([[[0], [1], [0]], [[1], [1], [1]], [[0], [1], [0]]], dtype=tf.float32)
res = tf.nn.dilation2d(t, filter, strides=[1, 2, 2, 1], padding='SAME')
print(res)
Результат выполнения кода:
tf.Tensor([[[[5.]
[9.]]]], shape=(1, 1, 2, 1), dtype=float32)
Пример
Давайте применим дилатацию к тензору с двумя каналами:
import tensorflow as tf
t = tf.constant([[[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]]]], dtype=tf.float32)
filter = tf.constant([[[0, 0], [1, 1], [0, 0]], [[1, 1], [1, 1], [1, 1]], [[0, 0], [1, 1], [0, 0]]], dtype=tf.float32)
res = tf.nn.dilation2d(t, filter, strides=[1, 1, 1, 1], padding='VALID')
print(res)
Результат выполнения кода:
tf.Tensor([[[[14. 16.]
[16. 18.]]]], shape=(1, 1, 2, 2), dtype=float32)
Смотрите также
-
функцию
conv2d,
которая выполняет двумерную свертку -
функцию
atrous_conv2d,
которая выполняет двумерную свертку с расширением -
функцию
depthwise_conv2d,
которая выполняет глубинную двумерную свертку -
функцию
separable_conv2d,
которая выполняет разделяемую двумерную свертку