Класс RandomZoom
Класс RandomZoom применяется к изображениям
и выполняет случайное увеличение или уменьшение
масштаба. Первым параметром передаётся
коэффициент масштабирования height_factor,
вторым - width_factor. Если второй параметр
не указан, он принимает значение первого.
Третьим параметром можно передать стратегию
заполнения fill_mode, а четвёртым -
значение fill_value для заполнения
освободившихся областей.
Синтаксис
tf.keras.layers.RandomZoom(
height_factor,
width_factor=None,
fill_mode='reflect',
fill_value=0.0,
interpolation='bilinear',
seed=None
)
Пример
Давайте применим случайное масштабирование к тензору с изображением:
import tensorflow as tf
tf.random.set_seed(0)
t = tf.constant([[[1], [2], [3]], [[4], [5], [6]]], dtype=tf.float32)
layer = tf.keras.layers.RandomZoom(0.5)
res = layer(t, training=True)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[5.]
[5.]
[5.]]
[[5.]
[5.]
[5.]]], shape=(2, 3, 1), dtype=float32)
Пример
Давайте зададим разные коэффициенты для высоты и ширины:
import tensorflow as tf
tf.random.set_seed(0)
t = tf.constant([[[1], [2], [3]], [[4], [5], [6]]], dtype=tf.float32)
layer = tf.keras.layers.RandomZoom(0.2, 0.4)
res = layer(t, training=True)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[3.]
[3.]
[3.]]
[[5.]
[5.]
[5.]]], shape=(2, 3, 1), dtype=float32)
Пример
Давайте используем случайное масштабирование в составе модели:
<+python+>
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.RandomZoom(0.3),
tf.keras.layers.Conv2D(1, (1, 1))
])
t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]]]], dtype=tf.float32)
res = model(t, training=True)
print(res.shape)
<-python+>
Результат выполнения кода:
(1, 2, 3, 1)
Смотрите также
-
класс
RandomRotation,
который случайно поворачивает изображения -
класс
RandomTranslation,
который случайно сдвигает изображения -
класс
RandomCrop,
который случайно вырезает часть изображения -
класс
Resizing,
который изменяет размер изображения