Что означает нормализация вдоль любой оси в тензорном потоке? - PullRequest
2 голосов
/ 04 апреля 2020

Я понял, что нормализация с использованием tf.keras.utils.normalize(x_train, axis=0) и tf.keras.utils.normalize(x_train, axis=1) означает математически -> Если наши столбцы являются объектами, а строки - выборками данных, то использование axis=0 означает нормализацию каждого объекта по сумме этого объекта по всем выборкам. Теперь, когда у нас есть изображение, скажем, размерности 28 * 28, от чего зависит нормализующая ось? Каждое изображение представляет собой образец данных, поэтому меня смущает, по какой оси нормализовать значения пикселей, соответствующие одному изображению. Почти в каждом уроке и примере берется axis=1, и нормализация выполняется для всех изображений вместе.

В дополнение к математической операции мне бы хотелось понять и причины выбора оси.

1 Ответ

2 голосов
/ 06 апреля 2020

Нормализация по каналам может испортить визуальное представление изображения, и это всегда труднее проводить проверку работоспособности.

Вопрос 1: Теперь, когда мы есть изображение, скажем, размера 28 * 28, от чего зависит нормализующая ось?

Если у вас есть 28 * 28 * 1 (при условии 1 канала), вы можете нормализовать это изображение на основе на его расположении в наборе данных. Как правило, здесь используется значение 1, поскольку изображения обычно составлены, а не объединены .

[Image 0]     Compared to [Image 0][Image 1][Image 2][Image ...]
[Image 1]
[Image 2]
[Image ...]

То есть вы можете ссылаться на него следующим образом:

Image[0] = (28*28*1) // 28*28 is the number of Columns per Row (Image)
Image[1] = (28*28*1) 

Вопрос 2: Каждое изображение является выборкой данных, поэтому я запутался по какой оси нормализовать значения пикселей, соответствующие одному изображению. Почти в каждом уроке и примере берется ось = 1, и нормализация выполняется для всех изображений вместе.

Нормализация данных означает 2 вещи:

  1. Размещение данных на тот же масштаб (масштабирование), что повышает скорость и точность сходимости.
Scaling is commonly 0 to 1, -1 to 1, and -1 to 1 with 0 mean. 
Балансировка данных вокруг точки (Центрирование), которая борется с градиентами взрыва и исчезновения, а также с повышением сходимости и точности.

Как я указал в ответе на вопрос 1 ось значения = 1 обусловлена ​​укладкой изображений.

Image[0][28*28_pixels]
Image[1][28*28_pixels]
Image[...][28*28_pixels]

Следовательно, когда вы нормализуете в axis = 1 (columns), вы можете получить правильную шкалу , учитывая все значения в расположение в пикселях pixel 1 is compared to pixel 1 of all the images, что делается для набора данных WHOLE , поэтому нормализация сбалансирована по всем данным до определенной точки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...