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