`for`循环到PyTorch

时间:2017-11-21 15:49:37

标签: python deep-learning pytorch

我想用注意机制实现Q& A系统。我有两个输入;形状为contextquery的{​​{1}}和(batch_size, context_seq_len, embd_size) 我正在关注以下文件。 使用Match-LSTM和答案指针的机器理解。 https://arxiv.org/abs/1608.07905

然后,我想获得一个形状为(batch_size, query_seq_len, embd_size)的注意力矩阵。在论文中,他们计算每一行的值(这意味着论文中的每个上下文单词,G_i,alpha_i)。

我的代码在下方并且正在运行。但我不确定我的方式是好还是不好。例如,我使用(batch_size, context_seq_len, query_seq_len, embd_size)生成序列数据(for loop)。为了获得每一行,我使用像for i in range(T):那样的就地操作符,G[:,i,:,:]在pytorch中是一个好方法吗?如果没有,我应该在哪里更改代码?

如果你注意到其他问题,请告诉我。我是这个领域的新手和pytorch。对不起我的含糊不清的问题。

embd_context[:,i,:].clone()

1 个答案:

答案 0 :(得分:1)

我认为您的代码很好。您无法避免循环:for i in range(T):,因为在论文(https://openreview.net/pdf?id=B1-q5Pqxl)中的等式(2)中,存在来自Match-LSTM单元的隐藏状态,该状态涉及计算{{} 1}}和G_i向量,它们用于计算Match-LSTM的下一个时间步的输入。因此,您需要为Match-LSTM的每个时间步执行循环,我还没有看到另一种方法来避免alpha_i循环。