已经有一个关于什么的答案tf.nn.embedding_lookup
here https://stackoverflow.com/questions/34870614/what-does-tf-nn-embedding-lookup-function-do.
当尝试使用相同的参数和二维数组ID时,tf.nn.embedding_lookup返回3维数组,而不是二维数组,我不明白为什么。
当你有一维 ids 列表时[0, 1]
,该函数将返回嵌入列表[embedding_0, embedding_1]
where embedding_0
是一个形状数组embedding_size
。例如,id 列表可能是一批单词。
现在,你有一个matrixid 的列表,或 id 列表的列表。例如,您现在有一批句子,即一批单词列表,即单词列表的列表。
如果你的句子列表是:[[0, 1], [0, 3]]
(句子 1 是[0, 1]
,句子 2 是[0, 3]
),该函数将计算一个嵌入矩阵,其形状为[2, 2, embedding_size]
看起来像:
[[embedding_0, embedding_1],
[embedding_0, embedding_3]]
关于partition_strategy
争论,你不必为此烦恼。基本上,它允许您给出嵌入矩阵列表,如下所示params
如果计算有限制,则可以使用 1 个矩阵来代替。
所以,你可以分割你的形状嵌入矩阵[1000, embedding_size]
十个形状矩阵[100, embedding_size]
并将变量列表传递为params
。论点partition_strategy
处理词汇表(1000 个单词)在 10 个矩阵中的分布。