我想知道为什么 tf.nn.embedding_lookup
使用张量列表,而 tf.gather
只对单个张量执行查找。为什么我需要对多个嵌入进行查找?
我想我在某处读到它对于在大型嵌入上节省内存很有用,但我不确定这将如何工作,因为我看不到拆分嵌入如何节省任何东西。
最佳答案
tf.embedding_lookup
函数假定嵌入矩阵是分片,即分成许多部分。事实上,当嵌入矩阵被单向分片时它可以工作,在这种情况下它的行为类似于 tf.gather
。
但更有趣的情况是当嵌入矩阵很大并且您无法将其放在一台机器的内存中时,或者您希望嵌入查找操作具有高带宽。在这些情况下,它有助于将矩阵分成几部分。这些片段可以跨机器分布以将其全部放入内存中,并且还允许并行读取以获得更高的查找带宽。
关于tensorflow - 为什么 tf.nn.embedding_lookup 使用嵌入列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427471/