CNN: Стандартизация данных?

Я работаю над нейронной сетью, чтобы предсказать, является событие нейтрино или нет. Каждый вход x представляет собой матрицу: (3, 5484), три различных меры, 5484 датчика.

Поэтому я должен нормализовать вход, чтобы сеть работала правильно, но я сомневаюсь в этом, давайте объясним:

Мой набор данных: (x_1, ...., x_N). Давайте сосредоточимся только на одной функции и подумаем, что x - это вектор размера (5484). Тогда каждый x имеет среднее значение: mean_x и std: std_x. Но цель нормализации ввода - изменить его масштаб без потери информации (глобальная нормализация, одинаковые нормализующие коэффициенты для каждого ввода), верно?

Итак, я не уверен, как его масштабировать. Должен ли я сгладить (x_1, .., x_N) до одномерного вектора: (x_1, ..., x_5484 * N) и вычислить его среднее значение и стандартное отклонение?

Или я должен обрабатывать каждый из 5484 входных каналов независимо?

Я заблудился.


person Gericault    schedule 26.06.2017    source источник


Ответы (2)


Это зависит от того, как вы относитесь к данным датчика.

Если вы считаете, что датчики 5484 представляют разные элементы, не сглаживайте их и следует рассматривать 3 * 5484 как канал изображения. В противном случае, если датчики похожи, вы должны их сплющить.

Но интуитивно я считаю, что первый способ лучше.

person danche    schedule 27.06.2017
comment
Спасибо вам обоим, датчики Indeed должны представлять более или менее одно и то же, но я рассматривал каждые 3 * 5484 канала отдельно. Однако данные довольно скудные (скажем, для канала, более 100 тысяч примеров, возможно, 5-10 тысяч ненулевые) и очень разнообразны (большая дисперсия по сравнению со средним), поэтому я боюсь, что эта предварительная обработка убьет много данных, чтобы нули. Есть мнение? - person Gericault; 27.06.2017
comment
Препроцесс просто масштабирует данные и сохраняет распределение. Просто попробуйте. - person danche; 27.06.2017

Если 3 датчика независимы друг от друга, то у вас есть 5484 * 3 функции. Для каждой функции следует сгладить и стандартизировать данные.

Например, ваш полный набор данных может быть матрицей m * (5484 * 3), где m - количество выборок. Каждая строка в матрице - это образец.

вы можете использовать scipy http://scikit-learn.org/stable/modules/preprocessing.html

person canbax    schedule 27.06.2017