我正在尝试使用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
答案 0 :(得分:3)
在您的情况下,它看起来像batch_size = 1
,因为您正在查看一个示例。因此,max_time
为n=8
,input_size
为输入深度,在您的情况下为e=3
。因此,您需要构造一个input
张量,其形状为[1, 8, 3]
。它是batch_major,因此第一个维度(批量维度)是1
。如果你说同时有另一个输入,用n=6
个单词,那么你可以通过将第二个例子填充到8
个单词(通过填充最后两个单词嵌入的零)来组合这两个输入。并且您的inputs
大小为[2, 8, 3]
。