Класс Rescaling
Класс Rescaling применяется к данным изображения
и выполняет их линейное преобразование. Первым параметром
передаётся масштаб (множитель), вторым - смещение,
которое прибавляется после умножения. Слой часто
используется для нормализации пикселей из диапазона
[0, 255] в диапазон [0, 1] или
[-1, 1].
Синтаксис
tf.keras.layers.Rescaling(scale, [offset])
Пример
Давайте масштабируем тензор изображения,
разделив каждое значение на 255:
import tensorflow as tf
layer = tf.keras.layers.Rescaling(scale=1.0 / 255.0)
t = tf.constant([0, 127, 255])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([0. 0.49803922 1.], shape=(3,), dtype=float32)
Пример
Давайте применим масштабирование со смещением,
чтобы привести значения к диапазону [-1, 1]:
import tensorflow as tf
layer = tf.keras.layers.Rescaling(scale=1.0 / 127.5, offset=-1.0)
t = tf.constant([0, 127, 255])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor([-1. 0. 1.], shape=(3,), dtype=float32)
Пример
Давайте применим слой к двумерному тензору изображения:
import tensorflow as tf
layer = tf.keras.layers.Rescaling(scale=1.0 / 255.0)
t = tf.constant([[0, 128, 255], [64, 192, 32]])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[0. 0.5019608 1. ]
[0.2509804 0.7529412 0.1254902 ]], shape=(2, 3), dtype=float32)
Пример
Давайте встроим слой в модель Keras для нормализации входных изображений:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Rescaling(scale=1.0 / 255.0),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10)
])
t = tf.constant([[[[0], [128]], [[255], [64]]]])
res = model(t)
print(res.shape)
Результат выполнения кода:
(1, 10)
Смотрите также
-
класс
Resizing,
который изменяет размеры изображений -
функцию
convert_image_dtype,
которая преобразует тип данных изображения -
функцию
per_image_standardization,
которая стандартизирует изображения -
класс
RandomContrast,
который случайно изменяет контраст изображений