【发布时间】:2018-04-12 15:35:04
【问题描述】:
我正在处理必须传递给 RNN 的长序列数据。要进行截断的 BPTT 和批处理,似乎有两种选择:
- 通过组合来自不同序列的相应段来创建批次。保留批次中每个序列的最终状态并将其传递给下一批。
- 将每个序列视为一个小批次,序列中的片段成为批次的成员。保留一个段中最后一个时间步的状态,并将其传递到下一个段的第一个时间步。
我遇到了tf.contrib.training.batch_sequences_with_states,它似乎正在做两者之一。该文档让我感到困惑,因此我想确定它以哪种方式生成批次。
我猜它是第一种方式。这是因为,如果批处理是以第二种方式进行的,那么我们就无法利用向量化的好处,因为为了保留一个段的最后一个时间步长到下一个段的第一个时间步长之间的状态,RNN 应该处理一个一次令牌顺序。
问题:
tf.contrib.training.batch_sequences_with_states 中实现了这两种批处理策略中的哪一种?
【问题讨论】:
标签: python tensorflow deep-learning lstm rnn