我正在跟踪this的论文来实施,而Attentive Pooling Network则要建立一个问答系统。在第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))
答案 0 :(得分:1)
我发现论文的作者相信读者可以在这里假设/理解很多事情。从我的阅读中,我可以收集到以下信息:
W1
应该是1 X dk
矩阵,因为这是将Q
作为c X M
矩阵的唯一有意义的形状。b1
不必是矩阵。从上面的内容中,您可以得到一个c X 1 X M
矩阵,可以轻松地将其重塑为c X M
矩阵,而b1
可以是一个c X 1
向量,可以将其广播并添加到其余向量中矩阵。由于c
,d
和k
是超参数,因此W1
可以轻松拥有相同的b1
和Q
和A
。
到目前为止,这是我的想法,以防万一,请重新阅读和编辑。