conv1D по умолчанию выполняет 2-мерную свертку - PullRequest
0 голосов
/ 28 мая 2020

Таким образом, большинство руководств по CNN объясняют свертку в одном измерении как серию одномерных ядер, свертываемых с вашей входной последовательностью (как и традиционные фильтры FIR). Однако, насколько я понимаю, по умолчанию conv1d реализует свертку по всем вашим каналам для каждого вывода (по сути, двумерная свертка). Если желательна реализация традиционного КИХ-фильтра, вы должны указать groups = in_channels.

Проверка весов, похоже, подтверждает это:

from torch import nn

C1 = nn.Conv1d(in_channels=3, out_channels=6, kernel_size=7)
C2 = nn.Conv1d(in_channels=3, out_channels=6, kernel_size=7,groups=3)
C3 = nn.Conv2d(in_channels=3, out_channels=6, kernel_size=7)
C4 = nn.Conv2d(in_channels=3, out_channels=6, kernel_size=7, groups=3)

print(C1.weight.shape, '<-- 6 filters which convolve across two dimensions')
print(C2.weight.shape, '<-- 6 filters which convolve across one dimensions')
print(C3.weight.shape, '<-- 6 filters which convolve across three dimensions')
print(C4.weight.shape, '<-- 6 filters which convolve across two dimensions')

дает следующий результат:

torch.Size([6, 3, 7]) <-- 6 filters which convolve across two dimensions
torch.Size([6, 1, 7]) <-- 6 filters which convolve across one dimensions
torch.Size([6, 3, 7, 7]) <-- 6 filters which convolve across three dimensions
torch.Size([6, 1, 7, 7]) <-- 6 filters which convolve across two dimensions

Я ошибаюсь в этом наблюдении?

Если верно, я считаю, что наименование conv1d довольно сбивает с толку, поскольку подразумевает 1-мерную свертку.

1 Ответ

0 голосов
/ 29 мая 2020

Несколько вещей, которые следует учитывать:

1) Conv1d выполняет свертку с ядром 1 измерения (вектор). C1 и C2 будут иметь ядро ​​размера (7).

2) Conv2d выполняет свертку с ядром двух измерений (матрица). C3 и C4 будут иметь ядро ​​размером (7, 7).

3) Группы - это способ управления соединениями между входными и выходными каналами, если вы можете производить несколько одновременных сверток одновременно.

Подробнее здесь .

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