Keras: rescale = 1. / 255 против preprocessing_function = preprocess_input - какой использовать? - PullRequest
0 голосов
/ 15 февраля 2019

Фон

Я нахожу довольно много примеров кода, где люди предварительно обрабатывают свои данные изображения либо с помощью rescale=1./255, либо они используют preprocessing_function, устанавливая его на preprocess_input соответствующегомодель, которую они используют в ImageDataGenerator.Сначала я подумал, что использование rescale=1./255 работает только при работе с предварительно обученной моделью vgg16, но я продолжаю видеть примеры, где она используется с предварительно обученным resetnet50, созданием и т. Д.

Пока блог keras (https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html) использует этот подход ...

ImageDataGenerator(rescale=1./255, ...

... в документах Keras (https://keras.io/applications/) используется этот подход:

from keras.applications.vgg19 import preprocess_input
ImageDataGenerator(preprocessing_function=preprocess_input, ...

Я думал, что использование соответствующего preprocess_input соответствующей модели, которую я хочу обучить, всегда лучше, чем использование подхода rescale = 1. / 255, поскольку он будет на 100% отражать предварительную обработку, которая использовалась во времяобучение предварительно обученной модели.

Вопрос

Мне нужно уточнить, когда использовать rescale=1./255 против встроенного keras preprocess_input соответствующей модели, на которой я хочу тренироваться при предварительной обработке изображенийдля трансферного обучения. Имеет ли это значение только при использовании предварительно обученных моделей, то есть с нагрузкой по сравнению с тренировкой с нуля?

1 Ответ

0 голосов
/ 15 февраля 2019

First I thought using rescale=1./255 only works when dealing with a pretrained vgg16 model, but I keep seeing examples where it is being used with pre-trained resetnet50, inception etc. as well.

Причина, по которой это делается, заключается в том, что вам нужно НОРМАЛИЗОВАТЬ свой ввод.Обычно формула для нормализации мин-макс:

enter image description here

Что эквивалентно действию

1./255

Поскольку значения пикселей изображения будут между 0 и 1

Причина нормализации входных данных связана с числовой стабильностью и сходимостью (технически это вам не нужно, но с ней нейронная сеть имеетболее высокая вероятность сближения, а алгоритм градиентного спуска / адама с большей вероятностью будет стабильным)

Согласно Does this only make a difference when using pretrained-models i.e. with loaded weights vs training from scratch? Нет, он не связан только с моделями с предварительной подготовкой, это обычная техника при использовании определенныхалгоритмы в машинном обучении (нейронные сети являются одними из них).

Если вы заинтересованы в ДЕЙСТВИТЕЛЬНО понимании того, что происходит за всем этим и почему так важно нормализоваться, я настоятельно рекомендую вам взять Курс Андрея Нг по машинному обучению

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