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

Класс Conv2DTranspose

Класс Conv2DTranspose применяется для увеличения пространственных размеров изображения или карты признаков. Его часто называют слоем деконволюции, хотя математически он выполняет именно транспонированную свертку, а не обратную операцию. Слой принимает на вход четырехмерный тензор формы (batch, height, width, channels) и возвращает тензор с увеличенными высотой и шириной. Первым параметром передается число фильтров (целое число), вторым - размер ядра свертки (кортеж из двух чисел), третьим - шаг свертки strides, который определяет коэффициент увеличения. Также можно указать тип отступов padding (значения 'valid' или 'same') и функцию активации activation.

Синтаксис

tf.keras.layers.Conv2DTranspose( filters, kernel_size, strides=(1, 1), padding='valid', output_padding=None, data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros' )

Пример

Давайте создадим слой Conv2DTranspose с четырьмя фильтрами, ядром 3 на 3 и шагом 2. Подадим на вход тензор формы (1, 4, 4, 1) и посмотрим на форму выходного тензора:

import tensorflow as tf layer = tf.keras.layers.Conv2DTranspose( filters=4, kernel_size=(3, 3), strides=(2, 2), padding='same' ) 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]]]]) res = layer(t) print(res.shape)

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

(1, 8, 8, 4)

Пример

Давайте создадим слой с отступами 'valid' и шагом 3, чтобы увидеть, как меняется размер выходного тензора:

import tensorflow as tf layer = tf.keras.layers.Conv2DTranspose( filters=2, kernel_size=(3, 3), strides=(3, 3), padding='valid' ) t = tf.constant([[[[1.0], [2.0], [3.0]], [[4.0], [5.0], [6.0]], [[7.0], [8.0], [9.0]]]]) res = layer(t) print(res.shape)

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

(1, 11, 11, 2)

Пример

Давайте применим слой Conv2DTranspose с функцией активации relu и выведем значения первого канала:

<+python+> import tensorflow as tf layer = tf.keras.layers.Conv2DTranspose( filters=1, kernel_size=(2, 2), strides=(2, 2), padding='same', activation='relu' ) t = tf.constant([[[[1.0], [2.0]], [[3.0], [4.0]]]]) res = layer(t) print(res[0, :, :, 0]) <-python+>

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

tf.Tensor( [[0. 0. 0. 0. ] [0. 0.7928426 1.1888263 0. ] [0. 1.5856853 1.981669 0. ] [0. 0. 0. 0. ]], shape=(4, 4), dtype=float32)

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

  • класс Conv2D,
    который выполняет двумерную свертку
  • класс UpSampling2D,
    который увеличивает размеры изображения простым повторением
  • класс ZeroPadding2D,
    который добавляет нулевые отступы по краям
  • класс Conv1D,
    который выполняет одномерную свертку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить