TensorFlow中的序列标签

时间:2015-12-25 19:21:19

标签: sequence tensorflow lstm

我已经设法训练了一个带有张量流的word2vec,我想将这些结果反馈到一个带有lstm细胞的rnn中进行序列标记。

1)如何将训练有素的word2vec模型用于rnn并不是很清楚。 (如何提供结果?)

2)我没有找到关于如何实现序列标记lstm的文档。 (如何引入我的标签?)

有人能指出我如何开始这项任务的正确方向吗?

2 个答案:

答案 0 :(得分:6)

我建议您先阅读RNN tutorialsequence-to-sequence tutorial。他们解释了如何在TensorFlow中构建LSTM。一旦您对此感到满意,您将必须找到正确的嵌入变量并使用预先训练的word2vec模型进行分配。

答案 1 :(得分:3)

我意识到这是在不久前发布的,但我发现this Gist about sequence labelingthis Gist about variable sequence labeling对于确定序列标签非常有帮助。基本轮廓(要点的要点):

  1. 使用dynamic_rnn处理展开网络以进行培训和预测。这种方法在API中已经移动了一些,因此您可能必须为您的版本找到它,而只是谷歌。
  2. 将您的数据分成大小为[batch_size, sequence_length, num_features]的批次,并将您的标签分成大小为[batch_size, sequence_length, num_classes]的批次。请注意,您需要序列中每个时间步的标签。
  3. 对于可变长度序列,将值传递给批次中每个序列的sequence_length包装器的dynamic_rnn参数。
  4. 训练RNN与定义网络结构后训练任何其他神经网络非常相似:提供训练数据和目标标签,并观察它学习!
  5. 还有一些警告:

    1. 使用可变长度序列,您需要构建掩码来计算错误指标和内容。这些都在上面的第二个链接中,但不要忘记何时制作自己的错误指标!我跑了几次,这让我的网络看起来像是在变长序列上做得更糟。
    2. 您可能希望在损失函数中添加正则化项。没有这个我有一些收敛问题。
    3. 我建议首先使用tf.train.AdamOptimizer使用默认设置。根据您的数据,这可能不会收敛,您需要调整设置。 This article很好地解释了不同旋钮的作用。从一开始就开始阅读,在亚当部分之前解释了一些旋钮。
    4. 希望这些链接在将来对其他人有所帮助!