我们使用填充使序列长度相同还有其他原因吗?
Is there any other reason why we make sequence length the same using padding?
我们使用填充使序列长度相同,还有其他原因吗?除了为了进行矩阵乘法(因此进行并行计算)。
这可能取决于您处理的具体情况。但总的来说,我对 RNN 进行零填充或任何类型的填充的唯一原因是使批量计算有效。此外,填充应该以不影响结果的方式进行。因此,它不应该有助于计算您将用于下游任务的隐藏状态计算。例如,您可以从 {t+1:T} 填充特定序列的末尾,但是对于进一步的任务或处理,我们应该只使用 h{0:t}
但是,如果您做的不是简单的 RNN(例如双向 RNN),则填充可能会很复杂。例如:对于正向,您将在末尾填充;对于反向,您将希望填充序列的前部。
即使是批处理或并行计算,pytorch 也有 packed sequences
,这应该比填充 IMO 更快。
我们使用填充使序列长度相同,还有其他原因吗?除了为了进行矩阵乘法(因此进行并行计算)。
这可能取决于您处理的具体情况。但总的来说,我对 RNN 进行零填充或任何类型的填充的唯一原因是使批量计算有效。此外,填充应该以不影响结果的方式进行。因此,它不应该有助于计算您将用于下游任务的隐藏状态计算。例如,您可以从 {t+1:T} 填充特定序列的末尾,但是对于进一步的任务或处理,我们应该只使用 h{0:t}
但是,如果您做的不是简单的 RNN(例如双向 RNN),则填充可能会很复杂。例如:对于正向,您将在末尾填充;对于反向,您将希望填充序列的前部。
即使是批处理或并行计算,pytorch 也有 packed sequences
,这应该比填充 IMO 更快。