为什么我们需要在 seq2seq 网络中填充

Why do we need padding in seq2seq network

处理顺序不同,我想知道。

  1. 为什么我们需要将单词序列填充到相同的长度?

  2. 如果答案是"Yes, you need padding."。我可以在其他索引中设置填充吗?例如,如果我有这样的索引词:

    {0:"<s>,1:"<e>",2:"AAA",3:"BBB",.......,500:"zzz"}

其中<s>是句子的起始词,是句子的结束词。

我可以将填充标志设置为最后一个索引吗?

{0:"<s>,1:"<e>",2:"AAA",3:"BBB",.......,500:"zzz",501:"<pad>"} 

Why do we need padding the sequence the word to the same length?

因为基本上所有带参数的层都在其逻辑中的某个点执行一些矩阵乘法(实际上:张量乘法)。现在,你自己试试吧。乘以并非所有行或列都具有相同长度的矩阵。例如。这应该是什么?

| 1 2 3 |     | 1 | 
| 4 5   |  *  | 2 |  =  ???
              | 3 |

这是不可能做到的,除非你把一些值放在间隙中。甚至有人会争辩说,左边这个东西连矩阵都算不上

Can I set the padding in other indexes? Can I set the padding flag to the last index?

当然可以。您可以采用任何您想要的填充值。理想情况下,您应该使用一个在您的问题上下文中没有其他含义的值,因此不能与任何 "real" 值混淆。