tensorflow 中的词嵌入(无 pre_trained)
word embeddings in tensorflow (no pre_trained)
我是 tensorflow 的新手,正在尝试查看不同的 tensorflow 示例以更好地理解它。
现在我已经看到许多 tensorflow 示例中都使用了这一行,而没有提及用于获取单词嵌入的任何特定嵌入算法。
embeddings = tf.Variable(tf.random_uniform((vocab_size, embed_dim), -1, 1))
embed = tf.nn.embedding_lookup(embeddings, input_data)
这里有一些例子:
- https://github.com/Decalogue/dlnd_tv_script_generation/blob/master/dlnd_tv_script_generation.py
- https://github.com/ajmaradiaga/cervantes-text-generation/blob/master/cervants_nn.py
我知道第一行将通过随机分布初始化词的嵌入,但嵌入向量会在模型中进一步训练以提供更准确的词表示(并将初始随机值更改为更准确数字),如果是的话,当没有提到任何明显的嵌入方法时,实际使用的方法是什么,例如在代码中使用 word2vec 和 glove(或者在代码中提供这些方法的 pre_tained 向量而不是随机数)开始)?
是的,这些嵌入像 weights
和 biases
一样经过进一步训练,否则用一些随机值表示单词将没有任何意义。这些嵌入会在训练时更新,就像您更新 weight
矩阵一样,也就是说,通过使用梯度下降或 Adam 优化器等优化方法
当我们使用像 word2vec
这样的预训练嵌入时,它们已经在非常大的数据集上进行了训练,并且已经非常准确地表示了单词,因此,它们不需要任何进一步的训练。如果您要问这些是如何训练的,有两种主要的训练算法可用于从文本中学习嵌入;它们是连续词袋 (CBOW) 和 Skip Grams。在这里完全解释它们是不可能的,但我建议从 Google 那里寻求帮助。 This 文章可能会让您入门。
我是 tensorflow 的新手,正在尝试查看不同的 tensorflow 示例以更好地理解它。
现在我已经看到许多 tensorflow 示例中都使用了这一行,而没有提及用于获取单词嵌入的任何特定嵌入算法。
embeddings = tf.Variable(tf.random_uniform((vocab_size, embed_dim), -1, 1))
embed = tf.nn.embedding_lookup(embeddings, input_data)
这里有一些例子:
- https://github.com/Decalogue/dlnd_tv_script_generation/blob/master/dlnd_tv_script_generation.py
- https://github.com/ajmaradiaga/cervantes-text-generation/blob/master/cervants_nn.py
我知道第一行将通过随机分布初始化词的嵌入,但嵌入向量会在模型中进一步训练以提供更准确的词表示(并将初始随机值更改为更准确数字),如果是的话,当没有提到任何明显的嵌入方法时,实际使用的方法是什么,例如在代码中使用 word2vec 和 glove(或者在代码中提供这些方法的 pre_tained 向量而不是随机数)开始)?
是的,这些嵌入像 weights
和 biases
一样经过进一步训练,否则用一些随机值表示单词将没有任何意义。这些嵌入会在训练时更新,就像您更新 weight
矩阵一样,也就是说,通过使用梯度下降或 Adam 优化器等优化方法
当我们使用像 word2vec
这样的预训练嵌入时,它们已经在非常大的数据集上进行了训练,并且已经非常准确地表示了单词,因此,它们不需要任何进一步的训练。如果您要问这些是如何训练的,有两种主要的训练算法可用于从文本中学习嵌入;它们是连续词袋 (CBOW) 和 Skip Grams。在这里完全解释它们是不可能的,但我建议从 Google 那里寻求帮助。 This 文章可能会让您入门。