如何在Tensorflow中将static_rnn输入转换为dynamic_rnn输入?

5

我在理解tensorflow的dynamic_rnn输入参数时遇到了困难。如果我能够理解如何将static_rnn的输入转换为dynamic_rnn的输入,那将非常有帮助。

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

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

例如,假设我的数据由50个字符长的句子组成,因此input_size是字母表中字母的数量。对于static_rnn,我会创建一个长度为50的张量列表,其形状为[batch_size,input_size]。我如何将这个张量列表转换为单个张量,以便将其馈送到dynamic_rnn中?

1个回答

8
你的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))

这在IT技术领域十分实用。此外,一批中的示例数据长度可能不同(但必须填充到相同长度),但您必须将sequence_length参数传递给dynamic_rnn函数,以便它知道何时停止每个示例的计算。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接