1

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

  1. 网络是批量训练的,例如同时使用 128 个示例。假设我们的词汇表中有 10.000 个单词。网络的输入是大小为(128,sequence_length)的矩阵还是单热编码张量(128,sequence_length,10.000)?

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

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

即使这些问题很简单,我也无法找到答案。我希望有人能帮帮忙!

4

1 回答 1

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

  2. 是的。你应该填充你的句子以使它们的长度相同。你可以使用tf.nn.dynamic_rnn它,它可以处理可变长度的句子tf.while。有一篇很棒的文章处理了这个问题。 https://danijar.com/variable-sequence-lengths-in-tensorflow/ 您可以在 tensorflow dynamic_rnn 和 rnn 之间有什么区别?

  3. 可能的。但网络不知道句子是否连接。它只是将一行视为一个句子。所以,结果将毫无意义。

我希望这个答案会对你有所帮助。

于 2018-06-12T07:53:16.997 回答