7

我已经设法用 tensorflow 训练了 word2vec,我想将这些结果输入到带有 lstm 单元的 rnn 中以进行序列标记。

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

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

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

4

2 回答 2

6

我建议您从阅读RNN 教程序列到序列教程开始。他们解释了如何在 TensorFlow 中构建 LSTM。一旦您对此感到满意,您就必须找到正确的嵌入变量并使用您预先训练的 word2vec 模型对其进行分配。

于 2015-12-26T13:23:51.250 回答
3

我意识到这是不久前发布的,但我发现这个关于序列标记的 Gist和这个关于可变序列标记的 Gist对弄清楚序列标记非常有帮助。基本大纲(Gist of the Gist):

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

还有一些注意事项:

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

希望这些链接将来对其他人有所帮助!

于 2017-08-30T16:59:09.227 回答