TensorFlow 中的序列标记
Sequence Labeling in TensorFlow
我已经成功地用 tensorflow 训练了一个 word2vec,我想将这些结果输入到一个带有 lstm 单元格的 rnn 中用于序列标记。
1) 目前还不清楚如何将经过训练的 word2vec 模型用于 rnn。 (如何提供结果?)
2) 我没有找到太多关于如何实现序列标记 lstm 的文档。 (如何引入标签?)
有人可以为我指明如何开始这项任务的正确方向吗?
我建议您先阅读 RNN tutorial and sequence-to-sequence tutorial。他们解释了如何在 TensorFlow 中构建 LSTM。一旦你对此感到满意,你就必须找到正确的嵌入变量并使用你预训练的 word2vec 模型分配它。
我知道这是不久前发布的,但我发现 this Gist about sequence labeling and this Gist about variable sequence labeling 对于确定序列标签非常有用。基本大纲(Gist的主旨):
- 使用
dynamic_rnn
处理展开网络以进行训练和预测。此方法已在 API 中移动了一些,因此您可能需要为您的版本找到它,但只是 Google 它。
- Ar运行将您的数据分成大小为
[batch_size, sequence_length, num_features]
的批次,并将您的标签分成大小为 [batch_size, sequence_length, num_classes]
的批次。请注意,您需要为序列中的每个时间步长添加一个标签。
- 对于可变长度序列,将值传递给批处理中每个序列的
dynamic_rnn
包装器的 sequence_length
参数。
- 一旦定义了网络结构,训练 RNN 与训练任何其他神经网络非常相似:为其提供训练数据和目标标签,然后观察它学习!
还有一些注意事项:
- 对于可变长度序列,您将需要构建掩码来计算错误指标和其他内容。都在上面的第二个link里了,但是你自己做error metrics的时候别忘了!我 运行 参与了几次,这让我的网络看起来在可变长度序列上做得更糟。
- 您可能想为损失函数添加正则化项。没有这个我有一些收敛问题。
- 我建议首先使用默认设置的
tf.train.AdamOptimizer
。根据您的数据,这可能不会收敛,您需要调整设置。 This article 很好地解释了不同旋钮的作用。从头开始阅读,部分旋钮在 Adam 部分之前进行了解释。
希望这些 link 对以后的其他人有所帮助!
我已经成功地用 tensorflow 训练了一个 word2vec,我想将这些结果输入到一个带有 lstm 单元格的 rnn 中用于序列标记。
1) 目前还不清楚如何将经过训练的 word2vec 模型用于 rnn。 (如何提供结果?)
2) 我没有找到太多关于如何实现序列标记 lstm 的文档。 (如何引入标签?)
有人可以为我指明如何开始这项任务的正确方向吗?
我建议您先阅读 RNN tutorial and sequence-to-sequence tutorial。他们解释了如何在 TensorFlow 中构建 LSTM。一旦你对此感到满意,你就必须找到正确的嵌入变量并使用你预训练的 word2vec 模型分配它。
我知道这是不久前发布的,但我发现 this Gist about sequence labeling and this Gist about variable sequence labeling 对于确定序列标签非常有用。基本大纲(Gist的主旨):
- 使用
dynamic_rnn
处理展开网络以进行训练和预测。此方法已在 API 中移动了一些,因此您可能需要为您的版本找到它,但只是 Google 它。 - Ar运行将您的数据分成大小为
[batch_size, sequence_length, num_features]
的批次,并将您的标签分成大小为[batch_size, sequence_length, num_classes]
的批次。请注意,您需要为序列中的每个时间步长添加一个标签。 - 对于可变长度序列,将值传递给批处理中每个序列的
dynamic_rnn
包装器的sequence_length
参数。 - 一旦定义了网络结构,训练 RNN 与训练任何其他神经网络非常相似:为其提供训练数据和目标标签,然后观察它学习!
还有一些注意事项:
- 对于可变长度序列,您将需要构建掩码来计算错误指标和其他内容。都在上面的第二个link里了,但是你自己做error metrics的时候别忘了!我 运行 参与了几次,这让我的网络看起来在可变长度序列上做得更糟。
- 您可能想为损失函数添加正则化项。没有这个我有一些收敛问题。
- 我建议首先使用默认设置的
tf.train.AdamOptimizer
。根据您的数据,这可能不会收敛,您需要调整设置。 This article 很好地解释了不同旋钮的作用。从头开始阅读,部分旋钮在 Adam 部分之前进行了解释。
希望这些 link 对以后的其他人有所帮助!