如何通过Tensorflow实现张量中的元素比较?

时间:2018-01-17 03:30:27

标签: tensorflow deep-learning loss-function

在我的自定义丢失函数中,我想实现这个特定的计算:

输入:

tensor A: placeholder([None, 1])
tensor B: placeholder([None, 1])

A,B具有相同的形状。

输出:

tensor res: placeholder([None, 1]).

例如:

tensor   A: [0, 0, 1, 2, 2, 2, 3,...]
tensor   B: [4, 9, 2, 3, 5, 9, 4,...]
tensor res: [4, 4, 2, 3, 3, 3, 4,...]

首先,res [0] = B [0],如果A [i] == A [i-1],则res [i] = res [i-1];否则,res [i] = B [i]。所以我们得到 res = [4,4,2,3,3,3,4 ......]

我在这个问题上真的很困扰,而且我在tensorflow中没有预料到。希望回答,谢谢。

1 个答案:

答案 0 :(得分:0)

我认为在张量流中没有直接的方法可以解决这个问题。但是,您可以创建自己的操作或在tensorflow中以粗略的方式实现它

  1. condition - 创建一个数组,其索引为1,传递条件,其余为0。 (可以轻松并行化并使用张量流tf.while_loop

  2. prefixedSum - 在condition上使用prefix sum创建此数组。 (没有直接实施,但this可以提供帮助)

  3. reducedB - 使用condition创建一个选定元素的数组,从prefixedSum数组中选择索引。 (可以使用tf.while_loop

  4. 实施
  5. ans - 使用prefixedSum中的索引创建最终数组,并在reducedB中查找该索引。 (可以使用tf.while_loop

  6. 再次实施