【问题标题】:How is batching normally performed for sequence data for an RNN/LSTM通常如何对 RNN/LSTM 的序列数据执行批处理
【发布时间】:2020-11-06 19:19:50
【问题描述】:

这个Udacity course notebook 以我不直观的方式对数据进行批处理。

对于长序列的数据,他们首先截断数据,使其可以被batch_size 均分。接下来,他们将.reshape() 的数据变为(batch_size, -1)。然后他们在这些批次的子序列上创建一个滑动窗口。当滑动窗口超出范围时,它们会在末尾添加假数据(通过环绕到)。

提供的这张图可能比我能解释得更好:

我只是想知道这种做法是否正常,或者是否有其他方式。批次是不连续的子序列似乎很奇怪。这不会让解释单个批次的输出变得困难吗?

有没有更好的方法?视频中的女人字面意思是说“我不知道为什么会这样,但我以前见过,网络训练很好”。

【问题讨论】:

    标签: machine-learning neural-network pytorch lstm


    【解决方案1】:

    您应该查看 pytorch 中有关填充序列的文档。 (如果我有更多的经验,我会给你更详细的解释,但如果我从来没有真正理解过他们的话!)

    打包序列: https://pytorch.org/docs/master/generated/torch.nn.utils.rnn.PackedSequence.html#torch.nn.utils.rnn.PackedSequence

    包填充序列: https://pytorch.org/docs/master/generated/torch.nn.utils.rnn.pack_padded_sequence.html#torch.nn.utils.rnn.pack_padded_sequence

    填充序列: https://pytorch.org/docs/master/generated/torch.nn.utils.rnn.pad_packed_sequence.html#torch.nn.utils.rnn.pad_packed_sequence

    焊盘顺序: https://pytorch.org/docs/master/generated/torch.nn.utils.rnn.pad_sequence.html#torch.nn.utils.rnn.pad_sequence

    包装顺序: https://pytorch.org/docs/master/generated/torch.nn.utils.rnn.pack_sequence.html#torch.nn.utils.rnn.pack_sequence

    名称有点混乱。但这个想法是,您创建一个具有批量中最大序列大小的张量。其他序列将被填充以与 bach 中最长的序列具有相同的大小。这个打包的填充序列被提供给循环模型(RNN、LTMS、GRU,你最喜欢的)。有了它,您可以支持具有较小内存限制的任意序列。

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 2021-10-17
      • 1970-01-01
      • 2016-07-04
      • 2018-09-30
      • 2020-11-25
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多