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 из которых являются измерениями каждого изображения. |
| Возвращаемые значения |
A Tensor с той же формой, что и image и его тип данных float32. |
| Исключения |
ValueError | У формы image меньше 3 измерений. |