为了让 RNN 高效工作,我们对操作进行矢量化处理,从而生成形状为的输入矩阵
(m, max_seq_len)
其中m
是示例的数量,例如句子,并且max_seq_len
是句子可以具有的最大长度。一些示例的长度比 this 小max_seq_len
。一个解决方案是填充这些句子。
填充句子的一种方法称为“零填充”。这意味着每个序列都用零填充。例如,给定一个词汇表,其中每个单词都与某个索引号相关,我们可以表示一个长度为 4 的句子,
I am very confused
经过
[23, 455, 234, 90]
填充它以实现 a max_seq_len=7
,我们得到一个表示为的句子:
[23, 455, 234, 90, 0, 0, 0]
索引 0 不是词汇表的一部分。
填充的另一种方法是添加填充字符,例如<<pad>>
,在我们的句子中:
I am very confused <<pad>>> <<pad>> <<pad>>
实现max_seq_len=7
. 我们还添加<<pad>>
了我们的词汇表。假设它的索引是1000。那么句子表示为
[23, 455, 234, 90, 1000, 1000, 1000]
我已经看到使用了两种方法,但为什么使用一种方法而不是另一种方法?将零填充与字符填充进行比较有什么优点或缺点吗?