Tensorflow变换张量与向量查找

时间:2017-10-24 12:42:57

标签: python vector tensorflow lookup

给定一个具有唯一键和值的固定字典(所有数字都是非负整数):

d = {(1,3): 6, (5,4): 9}

在tensorflow中转换的有效方法是什么:

tf.constant([[1,3], [5,4], [1,3]]) -> tf.constant([6, 9, 6])

反之亦然:

tf.constant([6, 9, 6]) -> tf.constant([[1,3], [5,4], [1,3]])

2 个答案:

答案 0 :(得分:2)

正如@OphirYoktan所提到的,那里有一个查找运算符。我建议您使用tf.embedding_lookup,但由于您的目标是vector - id,您可以执行以下操作。

使用tf.map_fn

d_inverse = {v:k for k,v in d.items()}
d_mapped = tf.map_fn(lambda x: d[x], d.values())
d_mapped_inverse = tf.map_fn(lambda x: d_inverse[x], d_inverse.items()}

您只需将字母dd_inverse中的值设置为tf.constants

话虽如此,这些映射应该与图表的计算原因有关,否则我会建议你在图表之外做这些。

答案 1 :(得分:1)

在tensorflow中有一个可查找的模块 - 文档位于: https://www.tensorflow.org/api_docs/python/tf/contrib/lookup