Как более глубокие слои учатся на предыдущих слоях, отображают карты в сетях Conv - PullRequest
0 голосов
/ 05 февраля 2019

Я много читал о коннетах, но все же пропускаю важную часть.

Допустим, у нас есть слой conv2D с 32 фильтрами:

Я понимаю, что веса этих фильтров инициализируются случайным образом вВ начале и в процессе обучения эти фильтры формируются.Таким образом, на первом уровне они начинают обнаруживать края.

А теперь после объединения у нас есть еще один извилистый слой (скажем, 32 фильтра снова), который будет применять фильтры к результату предыдущего слоя.

Таким образом, слой 2 будет применять 32 фильтра к ЛЮБОМ из этих 32 выходов из первого слоя. Я видел очень много примеров этих карт характеристик: первый слой производит изображения краев, на следующем слое изображения - формы, уши,нос и тд.Мой вопрос: как это возможно?

Если слой 2 применяет фильтры к результату слоя 1, а результат слоя 1 - это ребра, то как вы получаете форму из ребра?

Я явно что-то здесь упускаю, пожалуйста, помогите мне понять, как возможен каждый следующий слой в сети, производящий более богатые объекты, такие как формы, глаза, лицо, если он использует продукцию из предыдущего слоя, где объекты - это просто линии и края?

Есть ли какая-то информация, сливающаяся во время процесса, который я пропускаю, или это нечто большее?

Заранее спасибо

1 Ответ

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

Простой пример: допустим, вы пытаетесь различить простые геометрические формы.Например, прямоугольники из бриллиантов.

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

Второй слой теперь может объединять эти входные данные в более сложные формы.Таким образом, один фильтр / детектор сработает, если на первом слое обнаружены вертикальные и горизонтальные края.Это фильтр для прямоугольника.

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

Вы можете ознакомиться с размерами входного и выходного сверточного слоя.

Input = W1xW1xD1

Output:
W2 = (W1 - F + 2P)/S + 1
D2 = K

Terminology: K = Number of Filters, F= Spatial Size of Filter, P=ZeroPadding, S=Stride

Вы можетенайти это полезным:

https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/

http://cs231n.github.io/convolutional-networks/

...