Введение
По сути, Conv1d
похоже на Conv2d
, но вместо «скольжения» прямоугольного окна по изображению (скажем, 3x3
для kernel_size=3
) вы «скользите» по вектору (скажем, длины 256
) с kernel
(скажем, размера 3
). Это случай in_channels
и out_channels
, равного 1
, который является базовым c one.
Ниже вы можете увидеть, как Conv1d
скользит по 3
in_channels (x-axis
, y-axis
, z-axis
) через seconds
шагов.
Вы можете добавить глубину в ядро (точно так же, как вы сделали для 2D
свертка с 5x5x3
кубом), что тоже будет 5x3
(5
- размер ядра, 3
- количество in_channels
). Теперь может быть out_channels
этих квадратов (например, 56
out_channels), поэтому окончательная полученная последовательность будет 56 x sequence_length
.
Вопросы
[...] пост- Слой net состоит из 512 фильтров с формой 5 × 1 ", которые работают с кадром спектрограммы 80-d (означает 80 различных значений с плавающей запятой в кадре), и результатом фильтрации является кадр размером 512 d.
Таким образом, ваш ввод - 80d
(вместо 3
осей, как указано выше), kernel_size
- то же самое (5
), а out_channels
- 512
. Таким образом, ввод может выглядеть примерно так вот так: [64, 80, 256]
(для [batch, in_channels, length]
) и вывод будет [64, 512, 256]
(при условии, что заполнение 3
использовалось с обеих сторон).
Я не понимаю, что такое in_channels, out_channels означают в определении pytorch conv1d, как и на изображениях, я могу легко понять, что означают входящие / исходящие каналы, но для последовательности кадров значений с плавающей запятой я теряюсь. Что они означают в контексте такой модели seq2seq выше?
Я полагаю, что ответ был дан выше. Основной момент: t Последовательность не является значениями с плавающей запятой! Последовательность может быть любой длины (точно так же, как изображение может иметь любой размер, когда вы передаете его в свертку), здесь in_channels
это 80
.
Как фильтры 512, 5x1 на 80 значениях с плавающей запятой дают 512 значений с плавающей запятой? **
512 x sequence_length
значения создаются на 80 x sequence_length
входах.
Разве веса в этом слое не должны быть 512 * 5 * 1, так как он имеет только 512 фильтров, каждый из которых 5x1?
В PyTorch, в вашем случае , гири будут иметь форму torch.Size([512, 80, 5])
. Это может быть torch.Size([512, 1, 5])
, если у вас один входной канал, но в данном случае их 80
.