doc2vec Tensorflow中的新文档表示

时间:2018-01-29 14:01:33

标签: tensorflow nlp doc2vec

我在TensorFlow中训练了doc2vec模型。所以现在我已经在字典和文档向量中嵌入了单词的向量。

在论文中

"Distributed Representations of Sentences and Documents"
Quoc Le, Tomas Mikolov

作者写道

  

“推理阶段”以获得新段落的段落向量D.   (从未见过)通过在D和渐变中添加更多列   按住W,U,b固定在D上。

我有预训练模型,因此我们将W,U和b作为图形变量。问题是如何在Tensorflow中有效地实现D(新文档)的推断?

1 个答案:

答案 0 :(得分:0)

对于大多数神经网络,如果您感兴趣的值,网络的输出(分类问题的类,回归的数字......)。在这些情况下,推理意味着在一些新数据上运行冻结的网络(前向传播)以计算所需的输出。

对于这些情况,可以使用多种策略快速为多个新数据点提供所需的输出:水平缩放,通过量化权重降低计算的复杂性,优化冻结图计算(请参阅https://devblogs.nvidia.com/tensorrt-3-faster-tensorflow-inference/ ),...

doc2Vec(和word2vec)是不同的用例然而不同:神经网络用于计算输出(预测下一个单词),但有意义且有用的数据是训练后神经网络中使用的权重。因此,推理阶段是不同的:您不希望获得神经网络的输出以获得新文档的矢量表示,您需要训练神经网络的一部分,为您提供文档的矢量表示。然后冻结部分神经网络(W,U,b)。

如何在Tensorflow中有效地计算D(文档向量):

  • 进行实验以定义最佳学习率(较小的值可能更适合较短的文档),因为它定义了文档的神经网络表示的速度。
  • 当神经网络的另一部分被冻结时,您可以在多个进程/机器上扩展推理
  • 识别瓶颈:目前什么慢?模型计算?从外部数据源的磁盘中检索文本?存储结果?

了解有关当前问题的更多信息,以及上下文可能有所帮助。