Класс ZeroPadding2D
Класс ZeroPadding2D применяется к двумерным данным,
например изображениям, и добавляет вокруг них рамку,
заполненную нулями. Первым параметром передается размер
рамки: число или кортеж из двух чисел. Вторым параметром
можно передать тип данных элементов. Слой полезен для
увеличения пространственных размеров данных перед
сверточными слоями.
Синтаксис
tf.keras.layers.ZeroPadding2D(padding=(1, 1), [data_format])
Пример
Давайте создадим слой ZeroPadding2D с рамкой
в один пиксель со всех сторон и применим его к тензору
размером 2 на 2:
import tensorflow as tf
t = tf.constant([[[1], [2]], [[3], [4]]])
t = tf.expand_dims(t, axis=0)
layer = tf.keras.layers.ZeroPadding2D(padding=(1, 1))
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[0.]
[0.]
[0.]
[0.]]
[[0.]
[1.]
[2.]
[0.]]
[[0.]
[3.]
[4.]
[0.]]
[[0.]
[0.]
[0.]
[0.]]]], shape=(1, 4, 4, 1), dtype=float32)
Пример
Давайте создадим слой ZeroPadding2D с разной
рамкой по высоте и ширине и применим его к тензору:
import tensorflow as tf
t = tf.constant([[[1], [2], [3]], [[4], [5], [6]]])
t = tf.expand_dims(t, axis=0)
layer = tf.keras.layers.ZeroPadding2D(padding=(1, 2))
res = layer(t)
print(res.shape)
Результат выполнения кода:
(1, 4, 7, 1)
Пример
Давайте создадим слой ZeroPadding2D с рамкой
заданной парой кортежей для симметричного и
несимметричного дополнения:
import tensorflow as tf
t = tf.constant([[[1], [2]], [[3], [4]]])
t = tf.expand_dims(t, axis=0)
layer = tf.keras.layers.ZeroPadding2D(padding=((1, 2), (2, 1)))
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[0.]
[0.]
[0.]
[0.]
[0.]]
[[0.]
[0.]
[1.]
[2.]
[0.]]
[[0.]
[0.]
[3.]
[4.]
[0.]]
[[0.]
[0.]
[0.]
[0.]
[0.]]
[[0.]
[0.]
[0.]
[0.]
[0.]]]], shape=(1, 5, 5, 1), dtype=float32)
Смотрите также
-
класс
Conv2D,
который выполняет двумерную свертку -
класс
Cropping2D,
который обрезает двумерные данные -
класс
UpSampling2D,
который увеличивает пространственные размеры данных -
класс
Reshape,
который изменяет форму тензора