Интерпретация in_channels и out_channels в Conv2D в нейронных сетях свертки Pytorch (CNN) - PullRequest
0 голосов
/ 09 апреля 2020

Предположим, у меня есть CNN с двумя слоями, начинающимися как:

inp_conv = Conv2D(in_channels=1,out_channels=6,kernel_size=(3,3))

Пожалуйста, исправьте меня, если я ошибаюсь, но я думаю, что это за строка, если код можно представить как этот

На вход поступает одно grayscale изображение, где мы должны использовать 6 различных ядер одинакового размера (3,3) для создания 6 различных карт характеристик из одного изображения.

И если у меня есть вторая Conv2D слой сразу после первого как

second_conv_connected_to_inp_conv = Conv2D(in_channels=6,out_channels=12,kernel_size=(3,3))

Что это значит в терминах out_channels? Будет ли 12 новых карт объектов для каждой из 6 карт объектов, поступающих в качестве выходных данных с первого слоя ИЛИ будет ли в общей сложности 12 карт объектов из 6 входящих объектов?

1 Ответ

0 голосов
/ 09 апреля 2020

Чтобы увеличить 6 каналов в вашем втором слое свертки до 12 каналов. Мы берем 12 из 6х3х3 фильтров. Каждый фильтр 6x3x3 выдаст один канал в качестве выходного сигнала при выполнении точечного произведения. Поскольку мы берем 12 из этих фильтров 6x3x3, мы получим ровно 12 каналов на выходе. Для получения дополнительной информации перейдите по этой ссылке.

https://cs231n.github.io/convolutional-networks/#conv

Редактировать: Подумайте об этом следующим образом. у нас есть 6 входных каналов, т.е. HxWx6, где H - высота, а W - ширина изображения. Поскольку имеется 6 каналов, мы берем 6 фильтров 3х3 (при условии, что размер ядра равен 3). После точечного произведения мы снова получаем 6 каналов. Но теперь мы добавляем все полученные 6 каналов, чтобы получить один канал. Эта операция выполняется 12 раз для получения 12 каналов.

...