python - Tensorflow 表查找 int->float

标签 python tensorflow

给定一个包含整数(代表类别)的未知维度 [?, ?] 的二维张量,我想获得一个具有相同形状的新张量,但值替换为从查找表(代表类别)中获取的 float 权重)。

例如:

inputs = [ [1,3,3], [2,4,2] ]
lookup table: {1: 0.2, 2: 0.25, 3: 0.1, 4: 0.45}
output: [ [0.2, 0.1, 0.1], [0.25, 0.45, 0.25] ]

我尝试用 tf.map_fn 链接两个 lambda 函数,遍历每一行,然后遍历每个元素:

elem_iter = lambda y: unknown_lookup_function(y)
row_iter = lambda x: elem_iter(x)
weights = tf.map_fn(row_iter, inputs, dtype=tf.float32)

但找不到定义查找函数的正确方法。 关于如何实现此行为的任何建议?有没有我可以使用的原生操作来代替 map_fn ?

最佳答案

我想你想使用 tf.gather :

想法是将查找表存储为数组。在 i 的索引处,您存储了输入 i 的查找值。如果您的 key 不是整数而是字符串,则需要使用 index_table_from_file .

# Note I pad a dummpy element at index-0.
lookup_table = tf.constant([0, 0.2, 0.25, 0.1, 0.45])

inputs = tf.constant([ [1,3,3], [2,4,2] ])
output = tf.gather(lookup_table, inputs)
with tf.Session() as sess:
  print sess.run(output)

> 
  [[ 0.2         0.1         0.1       ]
   [ 0.25        0.44999999  0.25      ]]

关于python - Tensorflow 表查找 int->float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46371866/

相关文章:

python - 新手代码: Converting individual numbers from an input into seperate values in binary

python - 如何在谷歌机器学习中将 jpeg 图像转换为 json 文件

python - 被 tensorflow 输出混淆

python - 按 2D 数组索引 3D 数组

python - CherryPy、线程和成员变量;潜在的问题?

python - 如何使用经过训练的模型编写 keras 以读取我自己的图片?

python - 将经过训练的 Tensorflow 模型加载到估算器中

machine-learning - 为什么梯度下降会更新 0 值权重?

python - Tensorflow 错误 : "Label IDs must < n_classes", 但我的标签 ID 似乎已经满足此要求