Понимание nn.Sequential в сверточных слоях - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в PyTorch / Deep Learning, и я пытаюсь понять, как используется следующая строка для определения сверточного слоя:

self.layer1 = nn.Sequential(nn.Conv1d(input_dim, n_conv_filters, kernel_size=7, padding=0), nn.ReLU(), nn.MaxPool1d(3))

Я понимаю, что это создание 1d сверточного слоя в сети с максимальным пулом шириной 3. Однако я не понимаю функции последовательного модуля или RelU. Как они работают при создании слоя?

Для справки, остальной код можно найти здесь: https://github.com/ArdalanM/nlp-benchmarks/blob/master/src/cnn/net.py

1 Ответ

0 голосов
/ 19 июня 2020

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

код, используя модуль Sequential, вы сообщаете PyTorch, что вы разрабатываете архитектуру, которая будет работать последовательно, и, указав ReLU, вы переносите концепцию нелинейности на картинку (ReLU - одна из широко используемых функций активации в рамках глубокого обучения). Нелинейность помогает CNN обобщать границы сложных решений и, в конечном итоге, помогает им работать лучше.

PS: Я рекомендую просмотреть https://towardsdatascience.com/convolutional-neural-network-for-image-classification-with-implementation-on-python-using-pytorch-7b88342c9ca9, чтобы получить лучшее представление с точки зрения кодера *. 1008 *

...