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