#neural-network #conv-neural-network
#нейронная сеть #conv-нейронная сеть
Вопрос:
Насколько я понимаю CNNs, Flatten используется для перехода от 2D к 1D, чтобы вы могли использовать плотные слои для выполнения классификации. Также, в моем понимании, выравнивание приводит к увеличению размеров фильтра, умноженного на количество фильтров.
Почему после выравнивания первый плотный слой не должен иметь те же размеры, что и в результате Flatten (что было бы уменьшением filter * filters )? CNN, в которых первый плотный слой имеет меньше или больше узлов, чем размеры flatten, будут работать, но я понятия не имею, почему. Разве flatten не должен предоставлять вам входные данные для плотных слоев?
Комментарии:
1. Можете ли вы поделиться примером того, о чем вы говорите? Мне кажется, у вас много неправильных представлений о том, как работает Flatten
Ответ №1:
Flatten действительно выравнивает ваши выходные данные до 1-мерности.
Однако плотный слой, в который он подается, может быть любого размера. Количество нейронов в плотном слое (-ах) не зависит от количества входных данных, которые они получают. Это особенность традиционных нейронных сетей (многослойных персептронов) и не имеет ничего общего с операциями свертки или слоями заранее.
Конструкция полностью подключенной части сети, где находятся плотные слои, не имеет окончательного решения, однако существуют эмпирические правила, которым можно следовать.
Комментарии:
1. Спасибо за ваш ответ. Но почему количество нейронов в первом плотном слое не зависит от количества входных данных, которые он получает? Теперь я понимаю, что, возможно, неправильно понимаю важную часть ANNs в целом, но я думал, что каждое входное значение использовалось как значение активации для одного входного узла, то есть для каждого входного значения должен быть один узел.
2. Нейроны не зависят от входных данных, потому что входные данные не отображаются один к одному с нейронами. Каждый ввод может поступать ко многим нейронам в первом слое (один ко многим).
3. Хорошо, отлично. Итак, как именно входные данные отображаются на узлы в первом слое? Все ли входные данные поступают на каждый узел? И затем каждый узел суммирует свои входные данные и помещает общий ввод в функцию активации для определения ее выходных данных? Почему этот процесс никогда не показан ни в каких руководствах (которые я видел, по крайней мере)? Знаете ли вы какие-нибудь хорошие блоги / источники, которые объясняют этот процесс?
4. Как правило, каждый вход сопоставляется каждому нейрону в первом слое — в любой сети, которую я разработал, это имело место. Значение каждого нейрона представляет собой сумму всех входных данных, умноженных на их соответствующие веса, плюс смещение. Затем это значение сжимается функцией активации для определения выходного сигнала этого нейрона. Этот вопрос отличается от оригинала, поэтому, если у вас есть более конкретный вопрос, я бы рекомендовал опубликовать другой вопрос. И не могли бы вы, пожалуйста, выбрать этот вопрос в качестве ответа.