张量流中的词嵌入(无预训练)

时间:2018-09-21 12:43:56

标签: tensorflow deep-learning embedding word-embedding

我是tensorflow的新手,并试图查看tensorflow的不同示例以更好地理解它。

现在我已经看到了很多张量流示例中都使用了这一行,而没有提到用于获取单词嵌入的任何特定的嵌入算法。

embeddings = tf.Variable(tf.random_uniform((vocab_size, embed_dim), -1, 1))
embed = tf.nn.embedding_lookup(embeddings, input_data)

以下是一些示例:

我知道第一行将通过随机分布来初始化单词的嵌入,但是将在模型中进一步训练嵌入向量以给出单词的更准确表示(并将初始随机值更改为更准确的数字)如果是,并且在没有提及任何明显的嵌入方法的情况下,例如在代码内部使用word2vec和手套(或在开始时提供这些方法的预先保留的向量而不是随机数),那么实际使用的方法是什么?

1 个答案:

答案 0 :(得分:0)

是的,这些嵌入的训练就像weightsbiases一样,否则用一些随机值表示单词将毫无意义。像在训练weight矩阵时那样更新这些嵌入,就像使用诸如Gradient Descent或Adam优化器之类的优化方法那样来更新矩阵。

当我们使用word2vec之类的预训练嵌入时,它们已经在非常大的数据集上进行了训练,并且已经非常精确地表示了单词,因此,它们不需要任何进一步的训练。如果您要询问如何训练它们,可以使用两种主要的训练算法来学习文本的嵌入;它们是连续词袋(CBOW)和跳过克。在这里无法完全解释它们,但我建议您从Google获得帮助。 This文章可能会让您入门。