我想在TensorFlow中构建一个递归神经网络(RNN)来预测一系列单词中的下一个单词。我看过几个教程,例如TensorFlow之一。我知道训练文本中的每个单词都映射到整数索引。但是,我仍然有一些关于输入的内容:
网络经过批量培训,例如:同时有128个例子。假设我们的词汇量中有10,000个单词。网络输入是一个大小(128,sequence_length)或一个热编码张量(128,sequence_length,10.000)的矩阵吗?
第二个维度有多大,即序列长度?我是否在批次的每一行中使用一个句子,用零填充比其他句子短的句子?
或者一行可以对应多个句子吗?例如。可以排成一排“这是一个测试句。怎么样?”如果是这样,第二句在哪里继续?在同一批次的下一行?或者在下一批中的同一行?我如何保证TensorFlow正确地继续句子?
即使这些问题非常简单,我也无法找到这些问题的答案。我希望有人可以帮忙!
答案 0 :(得分:0)
是。它的三维向量(128,sequence_length,10.000)
是。你应该填写你的句子,使它们长度相同。你可以使用tf.nn.dynamic_rnn
,它可以在tf.while
上处理可变长度的句子。
有一篇很好的文章处理了这个问题。
https://danijar.com/variable-sequence-lengths-in-tensorflow/
您可以在Whats the difference between tensorflow dynamic_rnn and rnn?
可能的。但网络并不知道句子是否连通。它只考虑一行作为一句话。所以,结果将毫无意义。
我希望这个答案可以帮到你。