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