RNN语言模型(TensorFlow)的输入是什么?

时间:2017-09-20 07:41:36

标签: python tensorflow sequence recurrent-neural-network language-model

我想在TensorFlow中构建一个递归神经网络(RNN)来预测一系列单词中的下一个单词。我看过几个教程,例如TensorFlow之一。我知道训练文本中的每个单词都映射到整数索引。但是,我仍然有一些关于输入的内容:

  1. 网络经过批量培训,例如:同时有128个例子。假设我们的词汇量中有10,000个单词。网络输入是一个大小(128,sequence_length)或一个热编码张量(128,sequence_length,10.000)的矩阵吗?

  2. 第二个维度有多大,即序列长度?我是否在批次的每一行中使用一个句子,用零填充比其他句子短的句子?

  3. 或者一行可以对应多个句子吗?例如。可以排成一排“这是一个测试句。怎么样?”如果是这样,第二句在哪里继续?在同一批次的下一行?或者在下一批中的同一行?我如何保证TensorFlow正确地继续句子?

  4. 即使这些问题非常简单,我也无法找到这些问题的答案。我希望有人可以帮忙!

1 个答案:

答案 0 :(得分:0)

  1. 是。它的三维向量(128,sequence_length,10.000)

  2. 是。你应该填写你的句子,使它们长度相同。你可以使用tf.nn.dynamic_rnn,它可以在tf.while上处理可变长度的句子。 有一篇很好的文章处理了这个问题。 https://danijar.com/variable-sequence-lengths-in-tensorflow/ 您可以在Whats the difference between tensorflow dynamic_rnn and rnn?

  3. 中查看更多详情
  4. 可能的。但网络并不知道句子是否连通。它只考虑一行作为一句话。所以,结果将毫无意义。

  5. 我希望这个答案可以帮到你。