Есть ли преимущество добавления идентичных слоев CONV2d в ряд, в отличие от продолжения добавления слоев с увеличенным размером фильтра - PullRequest
1 голос
/ 14 июня 2019

есть ли преимущество добавления одинаковых слоев в ряд, как показано ниже:

model.add(layers.Conv2D(32, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))
model.add(layers.Conv2D(32, (3, 3), activation='relu'))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

, а не просто продолжать увеличивать размер фильтра, как показано ниже:

model.add(layers.Conv2D(32, (3, 3), activation='relu'))

model.add(layers.Conv2D(64, (3, 3), activation='relu'))

isОбычно добавляют одинаковые слои, потому что дороже просто продолжать увеличивать количество фильтров?

Я получаю более высокую точность, когда использую одинаковые слои подряд, но когда я просматриваю примеры и книги, я редко бываюАвторы добавляют одинаковые слои, и мне просто интересно, почему.

1 Ответ

1 голос
/ 14 июня 2019

Вопрос хороший, но ответ зависит от случая.

  1. Во-первых, очень важно знать размер изображений при применении сверток. Некоторые документы демонстрируют, что они не используют большое количество фильтров в ранних слоях, так как ранние слои собирают информацию о кромке / цвете / форме или подобной информации https://blog.keras.io/how-convolutional-neural-networks-see-the-world.html. Поэтому использование 128 фильтров вместо 32 в первых слоях может не очень хорошо увеличивают общую точность.

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

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

    Вы можете начать играть со свертками, добавлять / удалять слои, видеть улучшения (или нет), если вы добавите Dropout или BatchNormalization, но я бы посоветовал вам проверять уже устоявшиеся сети.

    Нет гарантии, что архитектура X или Y будет работать лучше. В настоящее время существует тенденция использовать архитектуры с пропускаемыми соединениями, которые обеспечивают сквозной градиентный поток без потери информации. Попробуйте использовать ResNet50 / 101 (все варианты), Xception, DenseNet, SENetwork.

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