tensorflow - 为什么 tf.nn.embedding_lookup 使用嵌入列表?

标签 tensorflow

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

我想我在某处读到它对于在大型嵌入上节省内存很有用,但我不确定这将如何工作,因为我看不到拆分嵌入如何节省任何东西。

最佳答案

tf.embedding_lookup 函数假定嵌入矩阵是分片,即分成许多部分。事实上,当嵌入矩阵被单向分片时它可以工作,在这种情况下它的行为类似于 tf.gather

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

关于tensorflow - 为什么 tf.nn.embedding_lookup 使用嵌入列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427471/

相关文章:

python - 用于分类非图像数据集的 Conv1D 显示错误 ValueError : `logits` and `labels` must have the same shape

c++ - 如何遍历张量的行、列和平面?

python - Tensorflow 将 tf.Variable 数组格式化为字符串作为另一个文件中的输入

python - 如何在自定义 Op 中改变 Tensorflow 变量?

python - 定义 TensorFlow 预制估计器的输入函数

python - Tensorflow - 添加 L2 正则化损失简单示例

python - 无法打开 TensorBoard 以仅使用矢量数据从 Google Cloud DataLab 嵌入可视化

tensorflow - 是否可以将张量提供给占位符?

tensorflow - Keras 模型在微调时变得更糟

python - Tensorflow 将预测值转换为二进制