Сколько нейронов имеет входной слой CNN? - PullRequest
0 голосов
/ 11 сентября 2018

Во всех литературных источниках говорится, что входной слой коннетета представляет собой тензор формы (ширина, высота, каналы).Я понимаю, что полностью подключенная сеть имеет входной слой с количеством нейронов, равным количеству пикселей в изображении (учитывая изображение в градациях серого).Итак, мой вопрос: сколько нейронов находится во входном слое сверточной нейронной сети? ниже изображения кажется вводящим в заблуждение (или я понял это неправильно). Это говорит о 3 нейронах во входном слое.Если так, то что представляют эти 3 нейрона?Они тензоры?Из моего понимания CNN не должен ли быть только один нейрон размера (высота, ширина, канал)?Пожалуйста, поправьте меня, если я ошибаюсь

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Кажется, что вы неправильно поняли некоторые термины, а также запутались, что сверточные слои имеют 3 измерения.

РЕДАКТИРОВАТЬ: я должен дать понять, что входной слой для CNN является сверточным слоем.

Количество нейронов в любом слое определяется разработчиком. Для полностью связанного слоя обычно это тот случай, когда для каждого входа есть нейрон. Итак, как вы упомянули в своем вопросе, для изображения число нейронов в полностью подключенном входном слое, вероятно, будет равно количеству пикселей (если только разработчик не захотел уменьшить частоту дискретизации в этой точке чего-либо). Это также означает, что вы можете создать полностью подключенный входной слой, который принимает все пиксели в каждом канале (ширина, высота, канал). Хотя каждый вход получает входной нейрон только один раз, в отличие от сверточных слоев.

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

Важной особенностью сверточных слоев является то, что они пространственно инвариантны . Это означает, что они ищут одинаковые функции по всему изображению. В конце концов, вы не хотели бы, чтобы нейронная сеть, обученная распознаванию объектов, распознавала велосипед только в том случае, если он находится в левом нижнем углу изображения! Это достигается путем ограничения всех весов в локальных рецептивных полях одинаковыми. Нейроны в сверточном слое, которые покрывают весь ввод и ищут одну особенность, называются filters . Эти фильтры являются двухмерными (они покрывают все изображение).

Однако, если весь сверточный слой ищет только одну функцию (например, угол), это серьезно ограничит пропускную способность вашей сети. Поэтому разработчики добавляют несколько фильтров , чтобы слой мог искать множество функций по всему вводу. Этот набор фильтров создает трехмерный сверточный слой.

Надеюсь, это помогло!

Edit- Используя пример, приведенный в статье, чтобы очистить свободные концы:

Вопрос ОП: Итак, представьте, что у нас есть изображение (27 х 27). И скажем, есть 3 фильтра каждого размера (3 X 3). Таким образом, есть полностью 3 X 3 X 3 = 27 параметров (W). Итак, мой вопрос, как эти нейроны связаны? Каждый из фильтров должен повторять более 27 пикселей (нейронов). Таким образом, одновременно 9 входных нейронов подключены к одному фильтрующему нейрону. И эти соединения меняются, когда фильтр проходит по всем пикселям.

Ответ: Во-первых, важно отметить, что типичным (и часто важным) является то, что рецептивные поля перекрываются. Таким образом, для перекрытия / шага 1 восприимчивое поле 3x3 верхнего левого нейрона (нейрон A), восприимчивое поле нейрона справа (нейрон B) также будет иметь восприимчивое поле 3x3, чье самое левое 3 соединения может занять те же входы, что и у самых правых соединений нейрона А.

С учетом вышесказанного, я думаю, что вы хотели бы визуализировать это, поэтому я буду придерживаться вашего примера, где нет совпадений, и предположим, что мы не хотим никаких отступов вокруг изображения. Если есть изображение с разрешением 27х27, и мы хотим 3 фильтра (это наш выбор). Тогда у каждого фильтра будет 81 нейрон (9x9 2D сетка нейронов). Каждый из этих нейронов будет иметь 9 соединений (соответствует рецептивному полю 3х3). Поскольку есть 3 фильтра, и каждый имеет 81 нейрон, у нас будет 243 нейрона.

Надеюсь, это прояснит ситуацию. Для меня ясно, что вы путаете свою терминологию (слой, фильтр, нейрон, параметр и т. Д.). Я бы порекомендовал вам прочитать некоторые блоги, чтобы лучше понять эти вещи, а затем сосредоточиться на CNN. Удачи:)

0 голосов
/ 11 сентября 2018

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

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

Изображения представляют собой 2D-объекты, и в компьютере они представлены в виде 2D-матриц, каждая ячейка имеет значение интенсивности для пикселя.Изображение может иметь несколько каналов , например, традиционные каналы RGB для цветного изображения.Таким образом, эти разные каналы можно рассматривать как значения для разных размеров изображения (в случае RGB это цветовые измерения) для одних и тех же мест на изображении.

С другой стороны, нейронные слои являются одномерными,Они принимают входные данные с одного конца и дают выходные данные с другого.Итак, как мы обрабатываем 2D-изображения в одномерных слоях нейронов?Здесь вступают в игру сверточные нейронные сети (CNN) .

Можно сгладить двухмерное изображение в один одномерный вектор путем объединения последовательных строк в одном канале, а затем последовательных каналов.Изображение размера (ширина, высота, канал) станет одномерным вектором размера (ширина х высота х канал), которое затем будет подано во входной слой CNN.Таким образом, чтобы ответить на ваш вопрос, входной слой CNN имеет столько нейронов, сколько есть пикселей на изображении во всех его каналах.

Я думаю, что у вас есть путаница в отношении базовой концепциинейрон:

Насколько я понимаю, CNN не должен ли быть только один нейрон размера (высота, ширина, канал)?

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

Надеюсь, это рассеет некоторые ваши сомнения.Пожалуйста, не стесняйтесь задавать любые вопросы в комментариях.:)

Редактировать:

Итак, представьте, что у нас есть (27 X 27) изображение.И скажем, есть 3 фильтра каждого размера (3 X 3).Таким образом, есть полностью 3 X 3 X 3 = 27 параметров (W).Итак, мой вопрос, как эти нейроны связаны?Каждый из фильтров должен повторять более 27 пикселей (нейронов).Таким образом, одновременно 9 входных нейронов подключены к одному фильтрующему нейрону.И эти соединения меняются, когда фильтр проходит по всем пикселям.

Правильно ли мое понимание?Я просто пытаюсь визуализировать CNN как нейроны со связями.

Простой способ визуализировать фильтры CNN - представить их в виде маленьких окон, которые вы перемещаете по изображению.В вашем случае у вас есть 3 фильтра размером 3х3.

  1. Обычно мы используем несколько фильтров, чтобы изучать различные виды функций из одного и того же локального восприимчивого поля (как правильно выразился michael_question_answerer )или более простые термины, наше окно.Вес каждого фильтра инициализируется случайным образом, поэтому каждый фильтр изучает немного отличную особенность.

  2. Теперь представьте, что каждый фильтр перемещается по изображению, покрывая только сетку 3x3 за раз.Мы определяем значение stepde , которое указывает, насколько окно сдвигается вправо и насколько вниз.В каждой позиции веса фильтра и пиксели изображения в окне будут давать одно новое значение в новом созданном volume .Таким образом, чтобы ответить на ваш вопрос, в общей сложности 3x3 = 9 пикселей связаны с 9 нейронами, соответствующими одному фильтру.То же самое для других 2 фильтров.

Ваш подход к пониманию CNN с помощью визуализации является правильным.Но вам все еще нужно освежить свое базовое понимание терминологии.Вот несколько полезных ресурсов, которые должны помочь: http://cs231n.github.io/convolutional-networks/

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

Надеюсь, это поможет.Продолжайте любопытство :) 1067 *

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