Tensorflow 为什么tf.nn.embedding\u查找使用嵌入列表?

Tensorflow 为什么tf.nn.embedding\u查找使用嵌入列表?,tensorflow,Tensorflow,我想知道为什么tf.nn.embedded_lookup使用张量列表,而tf.gather只对单个张量执行查找。为什么我需要查找多个嵌入 我想我在某个地方读到过,它对于在大型嵌入上节省内存是有用的,但我不确定这将如何工作,因为我不知道拆分嵌入将如何节省任何东西。tf.embedding\u lookup函数假设嵌入矩阵是分片的,即分为许多块。实际上,当嵌入矩阵被单向切分时,它可以工作,在这种情况下,它的行为类似于tf.gather 但更有趣的情况是,当嵌入矩阵很大时,您无法将其放在一台机器的内存

我想知道为什么
tf.nn.embedded_lookup
使用张量列表,而
tf.gather
只对单个张量执行查找。为什么我需要查找多个嵌入


我想我在某个地方读到过,它对于在大型嵌入上节省内存是有用的,但我不确定这将如何工作,因为我不知道拆分嵌入将如何节省任何东西。

tf.embedding\u lookup
函数假设嵌入矩阵是分片的,即分为许多块。实际上,当嵌入矩阵被单向切分时,它可以工作,在这种情况下,它的行为类似于
tf.gather

但更有趣的情况是,当嵌入矩阵很大时,您无法将其放在一台机器的内存中,或者,您希望嵌入查找操作具有较高的带宽。在这些情况下,它有助于将矩阵划分为多个部分。这些片段可以分布在不同的机器上,以将其全部存储在内存中,还允许并行读取以获得更高的查找带宽。

可能的副本