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

Функция nn.conv2d_transpose

Функция nn.conv2d_transpose применяется к четырехмерному входному тензору и выполняет операцию, обратную обычной двумерной свертке. Первым параметром передается входной тензор формы [batch, height, width, in_channels]. Вторым параметром передается тензор фильтров формы [height, width, out_channels, in_channels]. Третьим параметром задается форма выходного тензора output_shape. Дополнительно можно указать шаг свертки strides, отступы padding и формат данных data_format.

Синтаксис

tf.nn.conv2d_transpose( input, filters, output_shape, strides, padding, [data_format], [dilations], [name] )

Пример

Давайте создадим входной тензор формы 1 на 2 на 2 на 1 и один фильтр, а затем выполним транспонированную свертку с увеличением размера до 4 на 4:

import tensorflow as tf input_t = tf.constant([[[[1.0], [2.0]], [[3.0], [4.0]]]]) filters = tf.constant([[[[1.0]], [[1.0]]], [[[1.0]], [[1.0]]]]) output_shape = [1, 4, 4, 1] res = tf.nn.conv2d_transpose( input_t, filters, output_shape, strides=[1, 2, 2, 1], padding='SAME' ) print(res)

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

tf.Tensor( [[[[1.] [1. 2.] [2.]] [[1. 3.] [4. 6.] [3. 4.]] [[3.] [3. 4.] [4.]]]], shape=(1, 4, 4, 1), dtype=float32 )

Пример

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

import tensorflow as tf input_t = tf.constant([[[[1.0], [2.0]], [[3.0], [4.0]]]]) filters = tf.constant([ [[[1.0, 2.0]], [[1.0, 2.0]]], [[[1.0, 2.0]], [[1.0, 2.0]]] ]) output_shape = [1, 4, 4, 2] res = tf.nn.conv2d_transpose( input_t, filters, output_shape, strides=[1, 2, 2, 1], padding='SAME' ) print(res.shape) print(res)

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

(1, 4, 4, 2) tf.Tensor( [[[[1. 2.] [1. 2.] [2. 4.] [2. 4.]] [[1. 2.] [4. 8.] [6. 12.] [3. 6.]] [[3. 6.] [3. 6.] [4. 8.] [4. 8.]]]], shape=(1, 4, 4, 2), dtype=float32 )

Пример

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

import tensorflow as tf input_t = tf.constant([[[[1.0], [2.0]], [[3.0], [4.0]]]]) filters = tf.constant([[[[1.0]], [[1.0]]], [[[1.0]], [[1.0]]]]) output_shape = [1, 5, 5, 1] res = tf.nn.conv2d_transpose( input_t, filters, output_shape, strides=[1, 2, 2, 1], padding='VALID' ) print(res.shape) print(res)

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

(1, 5, 5, 1) tf.Tensor( [[[[1.] [1.] [2.] [2.] [0.]] [[1.] [1.] [2.] [2.] [0.]] [[3.] [3.] [4.] [4.] [0.]] [[3.] [3.] [4.] [4.] [0.]] [[0.] [0.] [0.] [0.] [0.]]]], shape=(1, 5, 5, 1), dtype=float32 )

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

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