如何将static_rnn输入转换为tensorflow中的dynamic_rnn输入?

问题描述:

我无法理解tensorflow的输入参数dynamic_rnn。如果我能理解如何将static_rnn输入转换为dynamic_rnn输入,它会有很大帮助。如何将static_rnn输入转换为tensorflow中的dynamic_rnn输入?

对于static_rnn,输入应该是张量,其形状是[batch_size, input_size],其中T为序列长度的长度T列表。这对我有意义。

对于dynamic_rnn,输入应该是形状为[batch_size, max_time, ...]的张量。我不明白如何在这里纳入input_size。更一般地说,我不知道你可以在省略号中加入什么。

举例来说,我的数据由50个字符长的句子组成,所以input_size是字母表中的字母数。对于static_rnn,我会做一个长度为50的张量列表,其形状为[batch_size, input_size]。我该如何将张量列表转换为单张量,以便我可以将它提供给dynamic_rnn

您的dynamic_rnn输入应该是[batch_size, sequence_length, input_size]的形状。

基本上张量表示的是batch_size长度为sequence_length的例子,剩下的省略号就是单个序列元素的形状。

的事情是,与dynamic_rnn你不需要知道sequence_length事前,所以你输入的占位符可能看起来像

x = tf.placeholder(tf.int32, shape=(batch_size, None, input_size)) 

这进来非常方便。此外,单个批次中的示例可以具有不同的长度(但必须填充相同长度),但您必须将参数sequence_length传递给dynamic_rnn,以便知道何时停止每个示例的计算。