Как расположить разные слои в CNN

Я просмотрел много статей о сверточных нейронных сетях и обнаружил, что есть несколько хороших структур, на которые я могу ссылаться. Например, AlexNet, VGG, GoogleNet.

Однако, если я хочу настроить архитектуру CNN самостоятельно, как расположить / упорядочить разные слои? Например. слой свертки, выпадение, максимальное объединение ... Есть ли стандарт? или просто продолжайте пробовать разные комбинации для получения хорошего результата?


comment
Что ж ... золотой вопрос нейронных сетей ... это полностью открыто для экспериментов, но вы можете изучить механизмы в коде keras для этих стандартных моделей, VGG16 довольно легко понять. github.com/keras-team/keras/tree/master/keras/ приложения   -  person Daniel Möller    schedule 16.05.2018
comment
@ DanielMöller Я хотел бы задать еще один глупый вопрос. Является ли разработка этих стандартных моделей также экспериментальной, так что исследовательская группа, возможно, не может объяснить, почему VGG16 требует 2 конв. В первом блоке и 3 конв. В третьем блоке?   -  person SinLok    schedule 17.05.2018
comment
Трудно сказать ... может быть, они смогут объяснить, а может, и нет ... Я не знаю.   -  person Daniel Möller    schedule 17.05.2018


Ответы (2)


На мой взгляд, стандартного стандарта нет, но комбинации

1-Например, если вы хотите создать более глубокую сеть, вы можете использовать остаточный блок, чтобы избежать проблемы исчезающего градиента.

2-Стандарт использования свертки 3,3 заключается в том, что он снижает вычислительные затраты, например, 3 одновременных свертки 3,3 могут достичь свертки 7,7 при меньших затратах.

3-Основная причина отсева состоит в том, чтобы ввести регуляризацию, которая также может быть достигнута путем пакетной нормализации, как утверждает автор.

4-Перед тем, что улучшать и как улучшать, нужно понять проблему, которую он / она пытается решить.

Вы можете ознакомиться с тематическим исследованием, которое было проведено в Стэндфорде,

person thefifthjack005    schedule 17.05.2018
comment
Не по теме вопрос. Как насчет предварительно обученной сети? По сравнению с настройкой CNN для обнаружения объектов, какая из них может быть проще и точнее? - person SinLok; 17.05.2018
comment
Что касается предварительно обученной сети для обнаружения объектов, вы можете выбрать resnet в качестве опорной сети для предварительно обученной CNN и продолжить либо одноэтапную, либо двухступенчатую сеть. С точки зрения точности Двухступенчатая сеть оказалась более точной, чем одноступенчатая. 1-Faster R-CNN - это двухступенчатый детектор 2-Retina Net, который является одноступенчатым детектором, но имеет характеристики двухступенчатых детекторов (например, Faster-RCNN) - person thefifthjack005; 18.05.2018

Обычно вы хотите разместить слой объединения после сверточного слоя. Кроме того, вы можете думать о выпадении как о параметре, который применяется к слою, а не к отдельному слою в целом - в зависимости от того, что вам легче представить.

person thc    schedule 16.05.2018
comment
Но когда мне следует использовать дропаутный слой и в зависимости от каких условий? Я видел, как многие люди использовали его до того, как полностью подключили слой. Но некоторые люди добавили его после нескольких циклов «Conv-› Max pooling ». - person SinLok; 16.05.2018
comment
Универсального ориентира не существует. Я бы посоветовал начать с простого, а затем попытаться оптимизировать. Например, попробуйте выпадение на всех слоях или попробуйте выпадение только на плотных слоях. - person thc; 16.05.2018
comment
Как насчет других слоев? Например, следует ли мне добавлять больше Conv в каждый блок или больше циклов постепенно? - person SinLok; 17.05.2018
comment
Вам нужно проверить и поэкспериментировать. Нет однозначного ответа для всех наборов данных. - person thc; 17.05.2018