tf.image.per_image_standardization
Линейно масштабирует каждое изображение в image, чтобы среднее значение было равно 0, а дисперсия — 1.
tf.image.per_image_standardization(
image
)
Используется в блокнотах
Для каждого 3-мерного изображения x в image вычисляет (x - mean) / adjusted_stddev, где
-
mean — среднее значение всех значений в x
-
adjusted_stddev = max(stddev, 1.0/sqrt(N)) — ограниченное значение, отличное от 0, для защиты от деления на 0 при обработке однородных изображений -
N — количество элементов в x
-
stddev — стандартное отклонение всех значений в x
Пример использования:
image = tf.constant(np.arange(1, 13, dtype=np.int32), shape=[2, 2, 3])
image # 3-D tensor
<tf.Tensor: shape=(2, 2, 3), dtype=int32, numpy=
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]], dtype=int32)>
new_image = tf.image.per_image_standardization(image)
new_image # 3-D tensor with mean ~= 0 and variance ~= 1
<tf.Tensor: shape=(2, 2, 3), dtype=float32, numpy=
array([[[-1.593255 , -1.3035723 , -1.0138896 ],
[-0.7242068 , -0.4345241 , -0.14484136]],
[[ 0.14484136, 0.4345241 , 0.7242068 ],
[ 1.0138896 , 1.3035723 , 1.593255 ]]], dtype=float32)>
| Аргументы |
image | n-мерный Tensor с как минимум 3 измерениями, последние 3 из которых являются измерениями каждого изображения. |
| Возвращаемые значения |
Tensor с такой же формой, что и image, и его тип данных — float32. |
| Исключения |
ValueError | Форма image имеет меньше 3 измерений. |