当使用bucketing方法训练seq2seq模型时,我们是否为每个桶保留单独的RNN?

时间:2017-06-08 06:51:30

标签: tensorflow deep-learning lstm

假设我们有3个不同长度的桶。那么我们训练3个不同的网吗? 我们不能保持动态RNN 。它将根据编码器中输入序列的长度添加单位。然后编码器将最后一个隐藏状态传递给解码器。它会起作用吗?

1 个答案:

答案 0 :(得分:0)

我经历了这个。 Bucketing 有助于加快培训流程。我们首先将示例划分为桶。然后我们可以减少我们必须填充的单位数量。 在训练迭代中,我们一次选择一个桶并训练整个网络。 在验证中,我们检查每个存储桶中测试示例的困惑。 Tensorflow支持此分组。

动态RNN与此不同,我们不具备分支机制。我们将数据输入为张量,形状为[batch_size,hidden size,max_seq_length]。

此处短于最大长度的序列应填充零。

然后它将创建动态RNN,其长度等于实际输入(没有填充零)。这在tensorflow中使用while循环。