我希望使用 Tensorflow 设计一个 LSTM 模型,其中句子的长度不同。我遇到了一个关于 PTB 数据集的教程(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/rnn/ptb/ptb_word_lm.py)。该模型如何捕获不同长度的实例?该示例没有讨论有关填充或其他技术来处理可变大小序列的任何内容。
如果我使用填充,展开尺寸应该是多少?
我希望使用 Tensorflow 设计一个 LSTM 模型,其中句子的长度不同。我遇到了一个关于 PTB 数据集的教程(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/rnn/ptb/ptb_word_lm.py)。该模型如何捕获不同长度的实例?该示例没有讨论有关填充或其他技术来处理可变大小序列的任何内容。
如果我使用填充,展开尺寸应该是多少?
你可以通过两种方式做到这一点。
TF 有一种方法可以指定输入大小。寻找一个名为“sequence_length”的参数,我在 tf.nn.bidirectional_rnn 中使用过这个。所以 TF 只会将你的单元展开到 sequence_length 而不是步长。
使用预定义的虚拟输入和预定义的虚拟输出(用于虚拟输出)填充您的输入。lstm 单元将学习预测虚拟输入的虚拟输出。当使用它(比如矩阵计算)时,虚拟部分的斩波。
PTB 模型会及时截断——它总是反向传播固定数量的步骤(配置中的 num_steps)。所以没有填充——它只是读取数据并尝试预测下一个单词,并且总是一次读取 num_steps 个单词。