TensorFlow 嵌入查找

2023-12-27

我正在尝试学习如何使用 TensorFlow 构建用于语音识别的 RNN。首先,我想尝试 TensorFlow 页面上提供的一些示例模型TF-RNN https://www.tensorflow.org/versions/master/tutorials/recurrent/index.html

根据建议,我花了一些时间通过基础版本的 word2vec 模型代码来了解如何将单词 ID 嵌入到密集表示(向量表示)中。我明白了什么tf.nn.embedding_lookup实际上是这样,直到我实际上遇到了与二维数组一起使用的相同函数TF-RNN https://www.tensorflow.org/versions/master/tutorials/recurrent/index.html ptb_word_lm.py,当它不再有意义时。

我想什么tf.nn.embedding_lookup does:

给定一个二维数组params和一维数组ids, 功能tf.nn.embedding_lookup从 params 中获取行,对应于给出的索引ids,它与它返回的输出的维度保持一致。

我感到困惑的是:

当尝试使用相同的参数和二维数组时ids, tf.nn.embedding_lookup返回 3 维数组,而不是 2 维,我不明白为什么。

我查了一下手册嵌入查找 https://www.tensorflow.org/versions/r0.9/api_docs/python/nn.html#embedding_lookup,但我仍然发现很难理解分区是如何工作的以及返回的结果。我最近尝试了一些简单的例子tf.nn.embedding_lookup并且它似乎每次都返回不同的值。这种行为是由于分区中涉及的随机性造成的吗?

请帮助我理解如何tf.nn.embedding_lookup有效,以及为什么在两者中都使用word2vec_basic.py, and ptb_word_lm.py即,使用它们的目的是什么?


已经有一个关于什么的答案tf.nn.embedding_lookup here https://stackoverflow.com/questions/34870614/what-does-tf-nn-embedding-lookup-function-do.


当尝试使用相同的参数和二维数组ID时,tf.nn.embedding_lookup返回3维数组,而不是二维数组,我不明白为什么。

当你有一维 ids 列表时[0, 1],该函数将返回嵌入列表[embedding_0, embedding_1] where embedding_0是一个形状数组embedding_size。例如,id 列表可能是一批单词。

现在,你有一个matrixid 的列表,或 id 列表的列表。例如,您现在有一批句子,即一批单词列表,即单词列表的列表。

如果你的句子列表是:[[0, 1], [0, 3]](句子 1 是[0, 1],句子 2 是[0, 3]),该函数将计算一个嵌入矩阵,其形状为[2, 2, embedding_size]看起来像:

[[embedding_0, embedding_1],
 [embedding_0, embedding_3]]

关于partition_strategy争论,你不必为此烦恼。基本上,它允许您给出嵌入矩阵列表,如下所示params如果计算有限制,则可以使用 1 个矩阵来代替。

所以,你可以分割你的形状嵌入矩阵[1000, embedding_size]十个形状矩阵[100, embedding_size]并将变量列表传递为params。论点partition_strategy处理词汇表(1000 个单词)在 10 个矩阵中的分布。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow 嵌入查找 的相关文章

随机推荐