首页 文章

TensorFlow的tf.nn.dynamic_rnn运算符的输入张量是如何构造的?

提问于
浏览
4

我正在尝试使用 tf.nn.dynamic_rnn 图形操作在TensorFlow 0.9.0中使用字嵌入和递归神经网络编写语言模型,但我不明白 input 张量是如何构造的 .

假设我有一个n个单词的语料库 . 我将每个单词嵌入长度为e的向量中,我希望我的RNN能够展开t个时间步长 . 假设我使用默认的 time_major = False 参数,我的 input 张量 [batch_size, max_time, input_size] 会有什么形状?

也许一个特定的小例子会使这个问题更加清晰 . 假设我有一个由n = 8个单词组成的语料库,看起来像这样 .

1, 2, 3, 3, 2, 1, 1, 2

假设我将它嵌入到大小为e = 3的向量中,嵌入1 - > [10,10,10],2 - > [20,20,20]和3 - > [30,30,30],我的 input 张力会是什么样的?

我已阅读TensorFlow Recurrent Neural Network tutorial,但不使用 tf.nn.dynamic_rnn . 我还阅读了 tf.nn.dynamic_rnn 的文档,但发现它令人困惑 . 特别是我不确定"max_time"和"input_size"在这里是什么意思 .

任何人都可以用n,t和e来表示 input 张量的形状,和/或用我描述的小语料库中的数据初始化张量的例子吗?

TensorFlow 0.9.0,Python 3.5.1,OS X 10.11.5

1 回答

  • 3

    在你的情况下,它看起来像 batch_size = 1 ,因为你正在看一个例子 . 所以 max_timen=8input_size 是输入深度,在你的情况下 e=3 . 所以你想要构造一个形状为 [1, 8, 3]input 张量 . 它是batch_major,因此第一个维度(批量维度)是 1 . 例如,如果您同时有另一个输入,使用 n=6 个单词,那么您可以通过将第二个示例填充到 8 个单词(通过填充最后两个单词嵌入的零)来组合这两个输入,并且您将具有 inputs 大小 [2, 8, 3] .

相关问题