使用dynamic_rnn并提供sequence_length参数时的奇怪行为

时间:2018-02-05 17:48:26

标签: python tensorflow rnn

在Tensorflow中使用dynamic_rnn时,我注意到一些奇怪的事情。

到目前为止,我没有提供sequence_length参数,我只是提供输入数据和目标。 最近我尝试提供sequence_length参数,因为我知道这是正确的做法。 然而,模型的行为却截然不同,这让我感到很困惑。

我已经训练了一个序列预测模型:给定一系列二元向量(不是一个热点)的网络,试图预测下一个向量。 当我没有提供sequence_length来生成预测时,我得到了这种输出: The top image is the input sequence, the bottom is the prediction output
它不是超级好,但它似乎遵循输入(或至少它尝试)

当我使用相同的训练模型时,但这次我提供了sequence_length参数,我得到了这种输出: The top image is the input sequence, the bottom is the prediction output
这是非常糟糕的,就像是在复制第一个输出。

我有三重检查:我提供的序列长度不为零,它是正确的长度值。 当我在训练期间提供sequence_length时,以及在我没有提供sequence_length时,我都会发现同样的问题。 如果我没有弄错的话,如果我在两种情况下使用相同的权重,我应该在有dynamic_rnn参数的情况下得到大致相同的东西吗?

我正在使用Tensorflow 1.0.0

是否有人注意到使用sequence_length并隐藏sequence_length值的任何奇怪内容?或者相反有人检查过他们在有PtToStack->Entry[PtToStack->top] = e ; 的情况下得到的结果是否相同? 知道为什么我会得到那样奇怪的输出吗?

非常感谢您的帮助!

0 个答案:

没有答案