在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 ;
的情况下得到的结果是否相同?
知道为什么我会得到那样奇怪的输出吗?
非常感谢您的帮助!