Я слежу за этой статьей для реализации и сетью Attentive Pooling для построения системы ответов на вопросы.В главе 2.1 говорится о слое CNN:
, где q_emb
- это вопрос, где каждый токен (слово) был внедрен с использованием word2vec,q_emb
имеет форму (d, M)
.d
- размерность вложения слова, а M
- длина вопроса.Аналогичным образом a_emb
- это вложение ответа с формой (d, L)
.Мой вопрос: как производится свертка и как возможно, чтобы W_1
и b_1
были одинаковыми для обеих операций?По моему мнению, по крайней мере, b_1
должен иметь разные размеры в каждом случае (и это должна быть матрица, а не вектор ....).
На данный момент я реализовал эту операцию в PyTorch.:
### Input is a tensor of shape (batch_size, 1, M or L, d*k)
conv2 = nn.Conv2d(1, c, (d*k, 1))