搬运自:https://www.quora.com/What-is-masking-in-a-recurrent-neural-network-RNN
我认为,在实践中,我们需要mask的最重要的原因之一是,我们要batchize多个句子作为一个输入,即输入了一批句子的模型做一个向前计算。
像这样的成像案例:两个句子:
I like cats.
He does not like cats.
然后我们通过词汇表中的索引将每个单词转换为int:
1I 2He 3like 4does 5not 6cats…。
1 3 6 0
2 4 5 3 6 0
如果要将这两个句子作为一个批处理连接到网络(在Pytorch,tensorflow中使用其他方法),则需要将它们作为张量或矩阵。
但是它们的长度不同。所以你给它们填充一些随机整数:
1 3 6 0 9 9
2 4 5 3 6 0
现在它变成了2x6矩阵。
然后您可以将此矩阵提供给网络。但是这些填充物是没有意义的,甚至是有害的。因此,您需要提供有关蒙版填充的模型信息
1 1 1 1 0 0
1 1 1 1 1 1
因此,在计算时,模型可以使用mask过滤掉填充(第一句末尾为9 9)。