Выбор значения фильтров Conv2D для начала - PullRequest
0 голосов
/ 21 сентября 2018

Я понимаю, что следующий вопрос может получить ответы в духе «речь идет об экспериментировании и использовании опыта», но я все равно спрошу, потому что думаю, что было бы полезно получить представление о том, на что мне следует обращать вниманиеначните с.

В Keras, слое свертки Conv2D, есть параметр с именем filters, который, как я понимаю, представляет собой «количество окон фильтра, свертываемых на изображении с размером, определяемым kernel_size параметр ".Т.е. Conv2D(filters=32, kernel_size=(3,3)..) будет означать, что 32 изображения размером 3х3 будут сканировать изображение.

Мой вопрос: если вы создаете совершенно новую нейронную сеть для решения, скажем, проблемы классификации / распознавания изображений безиспользуя предварительно обученную нейронную сеть (так, начиная с нуля), с какой filters величиной вы обычно начинаете свой первый сверточный слой?Есть ли эмпирическое правило?Является ли это буквально экспериментальным ответом?

Допустим, я хочу, чтобы новая модель могла распознавать, есть ли собака на изображении, без использования моделей ResNet50 или InceptionV3 imagenet, и яЯ собираюсь использовать цветные изображения размером 4160x3120, которые я уменьшил до input_shape из (224,168,3), как должен выглядеть мой первый слой Conv2D?

Например, этот пример кодахорошая отправная точка для решения моей проблемы:

model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), activation="relu", input_shape=(224,168,3), data_format="channels_last"))
model.add(Conv2D(64, kernel_size=(3,3), activation="relu"))
#additional model design code

Является ли 32 хорошей отправной точкой?Должен ли я пойти меньше?Является ли удвоение размера фильтров от слоя Conv2D до слоя Conv2D подходящим подходом к решению новой проблемы?

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

1 Ответ

0 голосов
/ 21 сентября 2018

16 или 32 в порядке.

Фильтры в первых нескольких слоях обычно менее абстрактны и, как правило, имитируют детекторы контуров, детекторы BLOB-объектов и т. Д. Как правило, к входному слою не нужно применять слишком много фильтров.так как из исходного входного слоя извлекается только так много информации.Большинство фильтров будут избыточными, если вы добавите слишком много.Вы можете проверить это, обрезав (уменьшая количество фильтров до тех пор, пока показатели вашей производительности не ухудшатся)

Размер ядра определяет, какая часть изображения вы хотите повлиять на вывод вашей свертки («рецептивное поле» ядра),Было замечено, что меньшие ядра, как правило, лучше, чем большие (т.е. идут с 3х3 вместо 5х5, 7х7).

Начальная архитектура берет эти решения из рук моделировщика, так как объединяет фильтры разных размеров ядра и позволяет модели изучать лучшие из них для использования.

В качестве ссылки я бы предложилпройдя курс Стэнфорда по CS231n на YouTube, чтобы понять все это: https://www.youtube.com/playlist?list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk

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