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

Класс UpSampling2D

Класс UpSampling2D применяется к данным для увеличения их пространственных размеров: высоты и ширины. Слой повторяет строки и столбцы входного тензора заданное число раз. Первым параметром передается кортеж из двух чисел или одно число size - коэффициент увеличения по высоте и ширине. Вторым параметром можно передать метод интерполяции interpolation - например, nearest или bilinear. Слой часто используется в генеративных сетях и автоэнкодерах для восстановления размерности после сжатия.

Синтаксис

tf.keras.layers.UpSampling2D(size=(2, 2), [interpolation="nearest"])

Пример

Давайте создадим слой UpSampling2D с коэффициентом увеличения 2 и применим его к тензору формы (1, 2, 2, 1):

import tensorflow as tf layer = tf.keras.layers.UpSampling2D(size=(2, 2)) t = tf.constant([[[[1], [2]], [[3], [4]]]]) res = layer(t) print(res)

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

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

Пример

Давайте применим слой к тензору с тремя каналами и размером (1, 2, 2, 3):

import tensorflow as tf layer = tf.keras.layers.UpSampling2D(size=(2, 2)) t = tf.constant([[ [[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]] ]]) res = layer(t) print(res.shape)

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

(1, 4, 4, 3)

Пример

Давайте используем метод интерполяции bilinear вместо стандартного nearest:

<+python+> import tensorflow as tf layer = tf.keras.layers.UpSampling2D( size=(2, 2), interpolation="bilinear" ) t = tf.constant([[[[1.0], [2.0]], [[3.0], [4.0]]]]) res = layer(t) print(res) <-python+>

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

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

Пример

Давайте встроим слой UpSampling2D в модель Keras вместе со слоем Conv2D:

import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(2, 2, 1)), tf.keras.layers.UpSampling2D(size=(2, 2)), tf.keras.layers.Conv2D(1, (3, 3), padding="same") ]) model.summary()

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

Model: "sequential" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Layer (type) ┃ Output Shape ┃ Param # ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ up_sampling2d (UpSampling2D) │ (None, 4, 4, 1) │ 0 │ ├─────────────────────────────────┼────────────────────────┼───────────────┤ │ conv2d (Conv2D) │ (None, 4, 4, 1) │ 10 │ └─────────────────────────────────┴────────────────────────┴───────────────┘ Total params: 10 (40.00 B) Trainable params: 10 (40.00 B) Non-trainable params: 0 (0.00 B)

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

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