我想知道为什么tf.nn.embedding_lookup
使用张量列表而tf.gather
只对单个张量执行查找。为什么我需要对多个嵌入进行查找?
我想我在某处读到它对于节省大型嵌入的内存很有用,但我不确定这将如何工作,因为我不知道拆分嵌入会如何节省任何东西。
tf.embedding_lookup
函数假定嵌入基质分片,即,划分成很多块。事实上,当嵌入矩阵被单向分片时,它可以工作,在这种情况下,它的作用类似于tf.gather
。
但更有趣的情况是当嵌入矩阵很大并且您无法将其放入一台机器的内存中时,或者您希望嵌入查找操作的带宽很高。在这些情况下,它有助于将矩阵划分为多个部分。这些片段可以跨机器分布以将其全部放入内存中,并且还允许并行读取以获得更高的查找带宽。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句