当前位置:   article > 正文

Bi-Directional Attention Flow for Machine Comprehension 代码+论文_bidirectionalattention代码

bidirectionalattention代码

 ICLR2017 双向attention 机制的QA模型

Code 

  • 论文的工作:对上下文(Content)和查询(Query)之间的交互建模。BlDAF,是一个多阶段的层次化模型,在不同的粒度级别上表示上下文,并使用双向注意流机制获得一个查询aware的上下文表示。
  • 输入:文章和问题pair, 输出答案的Start-End 位置作为预测结果
  • 模型结构图如下

 

 

1.   Character Embedding Layer 使用字符级CNNs将每个单词映射到向量空间,CNN的输出在整个宽度上最大化,以获得每个单词的固定大小向量。

  1. #Init函数中定义 1. Character Embedding Layer
  2. self.char_emb = nn.Embedding(args.char_vocab_size, args.char_dim, padding_idx=1)
  3. nn.init.uniform_(self.char_emb.weight, -0.001, 0.001)
  4. self.char_conv = nn.Sequential(
  5. nn.Conv2d(1, args.char_channel_size, (args.char_dim, args.char_channel_width)),
  6. nn.ReLU()
  7. )
  8. def char_emb_layer(x):
  9. """
  10. :param x: (batch, seq_len, word_len)
  11. :return: (batch, seq_len, char_channel_size)
  12. """
  13. batch_size = x.size(0)
  14. # (batch, seq_len, word_len, char_dim)
  15. x = self.dropout(self.char_emb(x))
  16. # (batch, seq_len, char_dim, word_len)
  17. x = x.transpose(2, 3)
  18. # (batch * seq_len, 1, char_dim, word_len)
  19. x = x.view(-1, self.args.char_dim, x.size(3)).unsqueeze(1)
  20. # (batch * seq_len, char_channel_size, 1, conv_len) -> (batch * seq_len, char_channel_size, conv_len)
  21. x = self.char_conv(x).squeeze()
  22. # (batch * seq_len, char_channel_size, 1) -> (batch * seq_len, char_channel_size)
  23. x &
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/527695
推荐阅读
相关标签
  

闽ICP备14008679号