TensorFlow - Сбой нормализации пакета при регрессии?

Я использую TensorFlow для многоцелевой регрессии. В частности, в сверточной сети с пиксельной маркировкой, где вводом является изображение, а меткой является "тепловая карта", где каждый пиксель имеет значение с плавающей запятой. Более конкретно, маркировка истинности основания для каждого пикселя ограничена снизу нулем, и, хотя технически не имеет верхней границы, обычно получается не больше 1e-2.

Без пакетной нормализации сеть способна дать разумный прогноз тепловой карты. При пакетной нормализации сети требуется много времени, чтобы достичь разумного значения потерь, и лучшее, что она делает, - это делает каждый пиксель средним значением. Это с помощью tf.contrib.layersconv2d а также batch_norm методы, с batch_norm передается в conv2d "s normalization_fn (или нет в случае нормализации партии). Я кратко попробовал нормализацию партии в другой (однозначной) регрессионной сети, и у меня тоже были проблемы (хотя я не проверял это так подробно). Существует ли проблема с использованием пакетной нормализации для задач регрессии в целом? Есть ли общее решение?

Если нет, что может быть причиной сбоя нормализации пакета в таком приложении? Я попытался выполнить множество инициализаций, скоростей обучения и т. Д. Я ожидал бы, что в конечном слое (который, конечно, не использует пакетную нормализацию) могут использоваться весовые коэффициенты для масштабирования выходного сигнала предпоследнего слоя до соответствующих значений регрессии. В противном случае я удалил пакетную норму из этого слоя, но без улучшения. Я попытался решить небольшую проблему классификации с помощью нормализации партии и не увидел там никакой проблемы, поэтому кажется разумным, что это может быть каким-то образом связано с природой проблемы регрессии, но я не знаю, как это может привести к такой резкой разнице. Известно, что нормализация партии имеет проблемы с проблемами регрессии?

0 ответов

Я считаю, что ваша проблема в этикетках. Норма пакета будет масштабировать все входные значения от 0 до 1. Если метки не масштабируются до аналогичного диапазона, задача будет более сложной. Это потому, что это требует, чтобы NN изучила значения другого масштаба.

Удалив пакетную норму из предпоследнего уровня, задача может быть немного улучшена, но вам по-прежнему требуется, чтобы слой NN научился уменьшать значения своего ввода, а затем нормализовать обратно до диапазона 0 - 1 (противоположного вашей цели).

Чтобы решить эту проблему, примените к меткам масштабатор от 0 до 1 так, чтобы ваша верхняя граница больше не была 1e-2. Во время вывода преобразуйте прогнозы обратно с помощью той же функции, чтобы получить фактический прогноз.

Другие вопросы по тегам