Я понимаю, что следующий вопрос может получить ответы в духе «речь идет об экспериментировании и использовании опыта», но я все равно спрошу, потому что думаю, что было бы полезно получить представление о том, на что мне следует обращать вниманиеначните с.
В 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
подходящим подходом к решению новой проблемы?
Полностью понимаю, что это сложный вопрос по своей сути, и нет подхода "быстро разбогатеть", но я простохочу получить лучшую оценку предмета.