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

Класс RandomTranslation

Класс RandomTranslation относится к слоям предобработки изображений и применяется к данным во время обучения. Слой случайным образом смещает изображение по ширине и высоте, заполняя освободившиеся области нулями. Первым параметром передаётся ширина сдвига, вторым - высота сдвига. Третьим параметром можно указать режим заполнения fill_mode, а четвёртым - значение для заполнения fill_value.

Ширина и высота сдвига задаются либо числом, либо кортежем из двух чисел. Если передано одно число, сдвиг выбирается случайно в диапазоне от минус этого числа до плюс этого числа. Если передан кортеж, сдвиг выбирается в указанном диапазоне. Значения задаются в долях от размера изображения.

Синтаксис

tf.keras.layers.RandomTranslation( height_factor, width_factor, fill_mode='reflect', fill_value=0.0, seed=None )

Пример

Давайте создадим слой случайного сдвига и применим его к тензору изображения:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.RandomTranslation(0.2, 0.2) t = tf.constant([[[[1], [2]], [[3], [4]]]], dtype=tf.float32) res = layer(t, training=True) print(res)

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

tf.Tensor( [[[[0.] [0.]] [[0.] [0.]]]], shape=(1, 2, 2, 1), dtype=float32)

Пример

Давайте применим слой к изображению с формой побольше и посмотрим на результат:

import tensorflow as tf tf.random.set_seed(0) layer = tf.keras.layers.RandomTranslation(0.1, 0.1, fill_mode='constant') t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]]], dtype=tf.float32) res = layer(t, training=True) print(res)

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

tf.Tensor( [[[[0.] [0.] [0.]] [[0.] [1.] [2.]] [[0.] [4.] [5.]]]], shape=(1, 3, 3, 1), dtype=float32)

Пример

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

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.RandomTranslation(0.2, 0.2), tf.keras.layers.Conv2D(1, (1, 1), input_shape=(4, 4, 1)) ]) t = tf.constant([[[[1], [2], [3], [4]], [[5], [6], [7], [8]], [[9], [10], [11], [12]], [[13], [14], [15], [16]]]], dtype=tf.float32) res = model(t, training=True) print(res.shape)

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

(1, 4, 4, 1)

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

  • класс RandomRotation,
    который случайно поворачивает изображение
  • класс RandomZoom,
    который случайно масштабирует изображение
  • класс RandomFlip,
    который случайно отражает изображение
  • класс RandomCrop,
    который случайно вырезает часть изображения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить