【问题标题】:How does tensorflow's tf.contrib.training.batch_sequences_with_states API work?tensorflow 的 tf.contrib.training.batch_sequences_with_states API 是如何工作的?
【发布时间】:2018-04-12 15:35:04
【问题描述】:

我正在处理必须传递给 RNN 的长序列数据。要进行截断的 BPTT 和批处理,似乎有两种选择:

  1. 通过组合来自不同序列的相应段来创建批次。保留批次中每个序列的最终状态并将其传递给下一批。
  2. 将每个序列视为一个小批次,序列中的片段成为批次的成员。保留一个段中最后一个时间步的状态,并将其传递到下一个段的第一个时间步。

我遇到了tf.contrib.training.batch_sequences_with_states,它似乎正在做两者之一。该文档让我感到困惑,因此我想确定它以哪种方式生成批次。

我猜它是第一种方式。这是因为,如果批处理是以第二种方式进行的,那么我们就无法利用向量化的好处,因为为了保留一个段的最后一个时间步长到下一个段的第一个时间步长之间的状态,RNN 应该处理一个一次令牌顺序。

问题:

tf.contrib.training.batch_sequences_with_states 中实现了这两种批处理策略中的哪一种?

【问题讨论】:

    标签: python tensorflow deep-learning lstm rnn


    【解决方案1】:

    tf.contrib.training.batch_sequences_with_states 实现了前一种行为。每个 minibatch 条目是来自不同序列的段(每个序列可以由可变数量的段组成,具有唯一的键,并且该键被传递到 batch_sequences_with_states)。当与state_saving_rnn 一起使用时,每个段的最终状态将保存回一个特殊的存储容器中,该容器允许给定序列的下一个段在下一个sess.run 处运行。最后的片段为不同的序列释放了一个小批量槽。

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 1970-01-01
      • 2017-09-10
      • 2017-12-21
      • 2020-02-17
      • 2019-09-24
      • 2017-06-22
      • 1970-01-01
      • 2014-06-19
      相关资源
      最近更新 更多