我有一个完全工作的seq2seq注意模型与光束搜索,它确实提供了改进的结果 . 但是推理需要> 1分钟(批量大小1024),k = 5(k是我的假设),因为它们都没有并行化 . 一切都是一次发生一次 .

Task (simplified)
目标是句子翻译,15个字朗A到15个字郎B.

  • 编码器是一个RNN,它接收15个单词的句子并对其进行编码,给出[timetep,512]矩阵以及最终的隐藏状态 .

  • 解码器是另一个RNN,将编码器隐藏状态作为初始状态,使用[timestep,512]矩阵进行注意,并一次输出翻译后的单词[批次]一次 . 当然,到目前为止,存在某种形式的并行化 .

  • 在推理阶段,使用波束搜索 . 在解码器的每个时间步,而不是采用具有最高概率的预测单词,我采用k个最好的单词 . 并提供k个单词作为下一个时间步的输入,以便它可以预测句子中的下一个单词(算法的其余部分在下面给出) . 在随后的时间步长中,算法使得解码不那么贪婪的预期结果具有更高的概率 .

for each element in the test-set
    calculate initial k (decoder-encoder step)
    for range(timesteps-1)
        for each prev k
            get hidden state
            obtain its best k
            save hidden state
        find new k from k*k possible ones
        ##update hypotheses based on new found k
        for element in k 
            copy hidden state
            change hypotheses if necessary
            append new k to hypotheses

有6个张量和2个列表可以跟踪和处理状态变化 . 这里有加速或并行化的空间吗?也许每个k可以同时通过enncode-decode?任何帮助深表感谢 .