Как сделать так, чтобы PyTorch Conv1d работал над вектором? - PullRequest
0 голосов
/ 13 марта 2020

Я понимаю, Conv1d шагает в одном измерении. Но мой ввод имеет форму [64, 20, 161], где 64 - это пакеты, 20 - это длина последовательности, а 161 - это размерность моего вектора.

Я не уверен, как настроить мои Conv1d для шагать по вектору.

Я пытаюсь:

self.conv1 = torch.nn.Conv1d(batch_size, 20, 161, stride=1)

, но получаю:

RuntimeError: Given groups=1, weight of size 20 64 161, expected input[64, 20, 161] to have 64 channels, but got 20 channels instead

1 Ответ

1 голос
/ 13 марта 2020

В соответствии с документацией :

torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

in_channels - это количество каналов на вашем входе, количество каналов, как правило, термин компьютерного зрения, в вашем случае это число равно 20. out_channels размер вашего вывода, это зависит от того, сколько выходного сигнала вы хотите.

Для 1D свертки вы можете думать о количестве каналов как "число входных векторов" и "количество выходных векторов объектов". И размер (не число) векторов выходных объектов определяется из других параметров, таких как kernel_size, strike, padding, dilation.

Пример использования:

t = torch.randn((64, 20, 161))
conv = torch.nn.Conv1d(20, 100)
conv(t)

Примечание: Вы никогда не указываете размер пакета в модулях torch.nn, первым размером всегда считается размер пакета.

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